linux学习笔记 下载本文

注意:上述if 语法中,中括号“[]”中的内容用于进行条件测试。使用”[]“进

行条件测试时,要注意空格的使用。在if 与”[“间要有空格,在”[“与

后面的条件表达式之间要有空格,在”]“与前面的条件表达式之间也要 有空格。 还有另外一种:

if expr1 # 如果expr1 为真(返回值为0) then # 那么

commands1 # 执行语句块commands1

elif expr2 # 若expr1 不真,而expr2 为真 then # 那么

commands2 # 执行语句块commands2 ... ... # 可以有多个elif 语句 else # else 最多只能有一个 commands4 # 执行语句块commands4 fi # if 语句必须以单词fi 终止 说明:

1.elif 可以有任意多个(0 个或多个) 2.else 最多只能有一个(0 个或1 个) 3.if 语句必须以fi 表示结束

4.expr 通常为条件测试表达式;也可以是多个命令,以最后一个命令的退出 状态为条件值。

5.commands 为可执行语句块,如果为空,需使用shell 提供的空命令“ : ”,

即冒号。该命令不做任何事情,只返回一个退出状态0 6. if 语句可以嵌套使用,如: ex4if.sh,chkperm.sh,chkperm2.sh, name_grep,tellme,tellme2,idcheck.sh

2.case 命令 使用case 语句有: case string in str1)

命令串1;; # 执行语句块命令,注意后面为“;;”双分号 str2) 命令串2;; *)

默认处理命令串;

esac # esac 实际上就是case 反过来写

case 详解:

case expr in # expr 为表达式,关键词in 不要忘! pattern1) # 若expr 与pattern1 匹配,注意括号 commands1 # 执行语句块commands1 ;; # 跳出case 结构

pattern2) # 若expr 与pattern2 匹配 commands2 # 执行语句块commands2 ;; # 跳出case 结构

... ... # 可以有任意多个模式匹配 *) # 若expr 与上面的模式都不匹配 commands # 执行语句块commands ;; # 跳出case 结构,为两个双分号 esac # case 语句必须以esac 终止 几点说明:

1. 表达式expr 按顺序匹配每个模式,一旦有一个模式匹配成功, 则执行该模式后面的所有命令,然后退出case。

2. 如果expr 没有找到匹配的模式,则执行缺省值“ *) ” 后面的命令块( 类似于if 中的else ); “ *) ” 可以不出现。 3. 所给的匹配模式pattern 中可以含有通配符和“ | ”。 4. 每个命令块的最后必须有一个双分号,可以独占一行,或放在最后一个命 令的后面。