shell 中if条件:
if condition; then
commands;
if
if condition; then
commands;
elif condition; then
commands;
else
commands;
if
可以使用逻辑运算符使if else 嵌套变得简单一些:
[ condition ] && action; 如果condition为真, 則执行action;
[ condition ] || action; 如果condition 为假,则执行action;
[ $var1 -ne 0 -a $var2 -gt 2 ] 可以使用-a 来进行逻辑与
[$var1 -ne 0 -o $var2 -gt 2 ] 可以使用-0 来进行逻辑或
文件系统相关测试:
[ -f $file_var ]: 如果给定变量包含正常的文件路径或文件名,则返回真;
[ -x $var ]: 如果给定的变量包含的文件可执行,则返回真;
[ -d $var ]: 如果给定的变量包含的文件是目录,则返回真;
[ -e $var ]: 如果给定的变量包含的文件存在,则返回真;
[ -c $var ]: 如果给定的变量包含的是一个字符设备文件的路径,则返回真;
[ -b $var ]: 如果给定的变量包含的是一个块设备文件的路径,则返回真;
[ -w $var ]: 如果给定的变量包含的文件可写,则返回真;
[ -r $var ]: 如果给定的变量包含的文件可读,则返回真;
[ -L $var ]: 如果给定的变量包含的文件是一个符号链接,则返回真;
字符串比较:
使用字符串比较时,最好用双中括号,因为有时采用单个中括号会产生错误,所以最好避开它们。
[[ $var1 == $var2 ]] 或者 [[ $var1 = $var2 ]]
检查两个字符串是否不同:[[ $var1 != $var2 ]]
检查字符串的字母序情况, 具体如下:
[[ $var1 > $var2 ]]: 如果str1 的字母序比str2大,则返回真。
[[ $var1 < $var2 ]]: 如果str1的字母序比str1小,则返回真。
[[ -z $str1 ]]: 如果str1包含的是空字符串,则返回真。
[[ -n $str1 ]]: 如果str1包含的是非空字符串,则返回真。