Linux Shell (5)-if、case、for、while、until
- if
四种结构:
if condition; then
commands
fi
----------------------
if condition
then
commands
fi
----------------------
if condition
then
commands
else
commands
fi
----------------------
if condition
then
commands
elif
then
commands
fi
----------------------
condition:
test condition _通过test命令的退出状态来判断条件是否成立,换种写法为 [ condition_** ]**
---------------number
-eq 等于
-le 小于等于
-lt 小于
-ge 大于等于
-gt 大于
-ne 不等于
---------------string
= 等于
!= 不等于
> 大于,标准ASCII排序,使用每个字母的ASCII数值来决定排序
-n str 长度是否大于0
-z str 长度是否为0
---------------file
-d file file是否存在且为一个目录
-e file file是否存在
-f file file是否存在且为一个文件
-x file file是否存在且可执行
-O file file是否为当前用户拥有
file1 _-nt _file2 _是否 file1比file2_新
file1 _-ot _file2 _是否file1比file2_旧
---------------复合条件 [ condition ] &&**||** [ condition ]
- case
与其他语言类似,语法结构如下:
case $user in
pattern1 | pattern2)
......;;
pattern3)
......;;
*)
......;;
esac
- for
语法结构:
for var in list
do
commands
done
list可以为以空格分隔的列表也可以为命令的输入;
list默认允许三种分隔符:空格、制表符、换行符,但可以通过IFS环境变量自定义分隔符,如
IFS=$'\n',比较好的习惯如下:
IFS.OLD=$IFS
IFS=$'\n'
........
IFS=$IFS.OLD
#这样可以避免之前修改了IFS变量影响后续的操作
C式for语法结构:
for (( a=1; a<=8; a++ ))
do
......
done
- while
语法结构:
while condition
do
......
done
condition与if中的一致
- until
语法结构:
until condition
do
......
done
- 其他
break、continue
跳出外循环:默认最内层为1,break 2则跳出倒数第二层外循环。
循环输出:done > aaa.txt 直接输出到aaa.txt文件