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
特殊变量:
$?:上一条命令的退出状态码
$#:参数的个数
$*:参数列表
$@:参数列表