bash中常用的条件测试有三种:

整数测试:

   -gt 大于

   -le 小于等于

   -ne 不等于

   -eq 等于

   -ge 大于等于

   -lt 小于

  

测试方法:

[ expression ] 注意前后都要个空格,否则语法错误 (命令测试法)

[[ expression ]] (关键字测试法)

test expression 


例如:


INT1=63

INT2=77


[ $INT1 -eq $INT2 ]

[[ $INT1 -eq $INT2 ]

test $INT1 -eq $INT2



文件测试:


-e FILE(路径):测试文件是否存在

-f FILE:测试文件是否为普通文件

-d FILE:测试指定路径是否为目录

-r FILE:测试当前用户对指定文件是否有读取权限

-w

-x


[ -e /etc/inittab ]


exit:退出脚本

exit #

如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码


bash -n 脚本 (测试脚本是否有语法错误的)


bash -x 脚本 (单步执行) 




多分支的if语句:

if 判断条件1;then

 statement1

 ...

elif 判断条件2;then

 statement2

 ...

elif 判断条件3;then

 statement3

 ...

fi



练习:写一个脚本

给定一个文件:

如果是一个普通文件,就显示之

如果是一个目录,也显示之

否则,此为无法识别文件


FILE="/mnt/rice6"

FILENAME=`$FILE | cut -d'/' -f3`

if [ ! -e $FILE ]; then

 echo"此文件不存在"

 exit 6 

fi


if [ -f $FILE ]; then

 echo"$FILENAME是一个文件" 

elif [ -d $FILE ]; then

 echo"$FILENAME是一个目录"

else

 echo"无法识别"

fi


bash变量的类型

 作用域:当前shell进程  本地变量(局部变量)

 作用域:当前shell进程及其子进程   环境变量

 位置变量:$1,$2,如: ls /etc/passwd /mnt/test

 $1:/etc/passwd

 $2:/mnt/test


 特殊变量:

  $?:上一条命令的退出状态码

  $#:参数的个数

  $*:参数列表

  $@:参数列表