if

# if
if condition; then
	commands;
fi

# if else if
if condition; then
	commands;
elif condition; then
	commands;
else
	commands;
fi

简单版本的 if 测试

[ condtion ] && action;
[ conditio ] || action;

算数比较

[ $var -eq 0 ] #当var等于0
[ $var -ne 0 ] #当var不等于0
  • -gt 大于
  • -lt 小于
  • -ge 大于或等于
  • -le 小于或等于

使用-a, -o 可以组合复杂的测试。

[ $var -ne 0 -a $var -gt 2 ] # -a相当于并且
[ $var -ne 0 -o $var -gt 2 ] # -o相当于或

文件比较

[ -f $file ] # 如果file是存在的文件路径或者文件名,则返回真
  • -f 测试文件路径或者文件是否存在
  • -x 测试文件是否可执行
  • -e 测试文件是否存在
  • -c 测试文件是否是字符设备
  • -b 测试文件是否是块设备
  • -w 测试文件是否可写
  • -r 测试文件是否可读
  • -L 测试文件是否是一个符号链接

字符串比较

字符串比较一定要用双中括号。

[[ $str1 == $str2 ]] # 测试字符串是否相等
[[ $str1 != $str2 ]] # 测试字符串是否不相等
[[ $str1 > $str2 ]] # 测试str1字符序号比str2大
[[ $str1 < $str2 ]] # 测试str1字符序号比str2小
[[ -z $str ]] # 测试str是否是空字符串
[[ -n $str ]] # 测试str是否是非空字符串

if 和[之间必须包含有一个空格

# ok
if [[ $1 == $2 ]]; then
	echo hello
fi

# error
if[[ $1 == $2 ]]; then
	echo hello
fi