1.判断控制语句
if语句
if condition1 then command1 elif condition2 then command2 else command3 fi
case语句
case var in patten 1) command1 ;; patten 2) command2 ;; *) command3 ;; esac
2.循环控制语句
for循环
for var in {list} do command done for i in a b c;do echo $i;done for ((i=1;i<=10;i++));do echo $i;done
while循环
while 条件表达式 do command done #打印1-5数字 i=0 while [ $i -le 5 ] do echo $i i=$[$i+1] done
until循环与while循环相反,条件为假时进入循环,条件为真退出循环。
continue:跳过本次循环,开始下一次循环;
break:结束整个循环;
exit:直接跳出程序;
3.条件判断
格式1:test 条件表达式
格式2:[ 条件表达式 ]
格式3:[[ 条件表达式 ]]
条件判断相关参数
判断文件类型:
#判断文件类型 -e 判断文件是否存在 -f 判断文件是否存在且是一个普通文件 -d 判断文件是否存在且是一个目录 -L 判断文件是否存在且是一个软连接文件 -s 判断文件是否存在且是一个非空文件 test -e file 只要文件存在条件为真 [ -d /shell01/dir1 ] 判断目录是否存在,存在条件为真 [[ -f /shell01/1.sh ]] 判断文件是否存在,并且是一个普通的文件
判断文件权限:
#判断文件权限 -r 当前用户是否可读 -w 当前用户是否可写 -x 当前用户是否可执行 -u 是否有suid,高级权限冒险位 -g 是否sgid,高级权限强制位 -k 是否有t位,高级权限粘滞位
判断文件新旧:
file1 -nt file2 比较file1是否比file2新 file1 -ot file2 比较file1是否比file2旧 file1 -ef file2 比较是否为同一个文件
判断整数:
-eq 等于 -ne 不等于 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于
判断字符串:
-z 判断是否为空字符串 -n 判断是否为非空字符串 str1 = str2 判断字符串是否相等 str1 != str2 判断字符串是否不相等
连接符:
-a和&&表示与;[ 1 -eq 1 -a 1 -ne 0 ]
-o和||表示或;
分号;只用来分割命令或表达式
uid=`id -u` test $uid -eq 0 && echo this is admin [ $(id -u) -ne 0 ] || echo this is admin [ $(id -u) -eq 0 ] && echo this is admin || echo this is not admin
类C风格的数值比较;在(( ))中=表示赋值,==表示判断。
双引号引起来,看作一个整体;= 和 == 在 [ 字符串 ] 比较中都表示判断 .
((2>=1));echo $? a='hello world';b=world [ $a = $b ];echo $? [ "$a" = "$b" ];echo $?