Nitro's

Nov 18, 2015 - Comments - dev

Linux Shell (5)-if、case、for、while、until

1)  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 ]

2)  case

与其他语言类似,语法结构如下:

case $user in
pattern1 | pattern2)
    ......;;
pattern3) 
    ......;;
*) 
    ......;;
esac

3)  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

4)  while

语法结构:

while condition
do
    ......
done

condition与if中的一致

5)  until

语法结构:

until condition
do
   ......
done

6) 其他

breakcontinue

跳出外循环:默认最内层为1,break 2则跳出倒数第二层外循环。

循环输出:done > aaa.txt 直接输出到aaa.txt文件