2010.7.10
Shell是操作系统与用户进行交互操作的界面
Shell脚本程序是Shell命令语句的集合,用于实现特定的功能;
Shell脚本程序保存在文本文件中,可以使用文本处理程序进行阅读和编辑;
Shell脚本程序是由Shell环境解释执行的,不需要在执行前进行编译;
执行Shell程序时,Shell脚本文件需要具有可执行(x)的属性。
文件Shells中保存了Linux系统中可使用Shell程序列表 /etc/shells
Shell变量的分类:
环境变量:主要是在程序运行的时候需要设置。
特殊变量(系统变量):分为预定义变量和位置变量。在对参数判断和命令返回值判断会使用。
用户变量(本地变量):在编程过程中使用最多。
反引号(`)可用来进行命令替换,执行时先执行反引号中的命令,并把执行结果赋给变量。
用双引号(“)引起来的字串中,变量替换依然有效,因此也称弱引用;此名,使用双引号还能够阻止单词分割。
用单引号(‘)引起来的字串,变量替换将不再进行,因此也被称为强引用。
变量的显示使用echo命令,格式如下:
   echo  $变量名       echo  ${变量名}
 
 
管道操作符  |
“|”符用于连接左右两个命令,将“|”左边的命令执行结果(输
出)作为“|”右边命令的输入
脚本中应包括的内容:
①脚本运行环境设置   #!/bin/bash
②注释行以#开始  # Clean  command  history,清除用户命令历史
③脚本语句   history –c
if/then结构用来判断命令列表的退出状态码是否为0(因为在UNIX惯例, 0表示成功”), 如果成功的话, 那么就执行接下来的一个或多个命令。
整数测试:

-eq   等于 [ "$a" -eq "$b" ]
-nq   不等于 [ "$a" -ne "$b" ]
-gt   大于 [ "$a" -gt "$b" ]
-ge   大于等于[ "$a" -ge "$b" ]
-lt    小于[ "$a" -lt "$b" ]
-le    小于等于[ "$a" -le "$b" ]

字符串测试:

=   等于[ "$a" = "$b" ]
!=  不等于[ "$a" != "$b" ]
<  小于[ “$a” \< “$b” ] ,转义
>  大于 [[ “$a” > “$b” ]]
-z  字符串为"null",长度为零
-n  字符串不为"null"

需注意的是:若使用后-z-n测试时,字符串最好用双引号引起
来。[…]中的大于号和小于号需要转义,[[…]]则不需要。
文件测试:
-f file  测试文件是否为普通文件
-d dir  存在且为一个目录时为真
-e     判断文件是否存在
-s     判断文件大小是否为0,不为0时返回真
组合测试条件:
-a   逻辑与        exp1  -a  exp2
如果表达式exp1exp2都为真的话,那么结果为真。
-o   逻辑或       exp1  -o  exp2
    如果表达式exp1exp2中至少有一个为真的话,那么结果为真。
!注意&&||如果用来组合测试条件,只能用于[[…]]中,而一般 -a –o 是用在[…]中或test语句中。
shell也可以进行简单的算术运算。格式如下:
$((expression))        $[ expression ]
 
if条件判断句

  if [ condition-true]
      then
        command
        
    fi
 
  if [ condition-true]
      then
       command
       
    else
       command
       
    fi
  if [ condition1 ]
     then
       command
        
    elif [ condition2 ]
     then
       command
     
    else
       command
       
    fi
 

!注意:if/then/fi都是独立的语句,若要放在同一行,需要用分号隔开。
case语句:

case的作用和多个if/then/else语句的作用相同,是它们的简化结构,特别适用于创建菜单
②每句测试行, 都以右小括号)来结尾
③每个条件判断语句块都以一对分号结尾
case块以esac (case的反向拼写)结尾 
 
case  “$variable”  in
“$conditional”)
command…
;;
“$condition2”)
command…
;;
esac