shell中if语句的使用要点!

if [ 表达式 ]

then

命令行1;

命令行2;

else

命令行3;

命令行4;

fi

注意:fi是整个语句的结束标志,不可缺少。“表达式"前后的空格不可缺少。

”表达式“的描述规则:

  • 文件表达式
if [ -f file ]    如果文件存在
if [ -d ... ]    如果目录存在
if [ -s file ]    如果文件存在且非空 
if [ -r file ]    如果文件存在且可读
if [ -w file ]    如果文件存在且可写
if [ -x file ]    如果文件存在且可执行   
  • 整数变量表达式
if [ int1 -eq int2 ]    如果int1等于int2   
if [ int1 -ne int2 ]    如果不等于    
if [ int1 -ge int2 ]       如果>=
if [ int1 -gt int2 ]       如果>
if [ int1 -le int2 ]       如果<=
if [ int1 -lt int2 ]       如果<
   
  •    字符串变量表达式
If [ $a = $b ]                 如果string1等于string2
                                字符串允许使用赋值号做等号
if [ $string1 !=  $string2 ]   如果string1不等于string2       
if [ -n $string  ]             如果string 非空(非0),返回0(true)  
if [ -z $string  ]             如果string 为空
if [ $sting ]                  如果string 非空,返回0 (和-n类似)    

  •      逻辑表达式
    逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]                        如果不存在目录$num

    逻辑与 –a                    条件表达式的并列
if [ 表达式1  –a  表达式2 ]

    逻辑或 -o                    条件表达式的或
if [ 表达式1  –o 表达式2 ]

   逻辑表达式

  •     表达式与前面的 =  != -d –f –x -ne -eq -lt 等合用
  •     逻辑符号就正常的接其他表达式,没有任何括号( ),就是并列
if [ -z "$JHHOME" -a -d $HOME/$num ]
  •     注意逻辑与-a与逻辑或-o很容易和其他字符串或文件的运算符号搞混了

注意:上述“表达式”的规则如C语言相差很大。“表达式”中的空格使用要严谨,容易出错。

 = 放在别的地方是赋值,放在if [ = ] 里就是字符串等于,shell里面没有 ==。

整数条件表达式,大于,小于,shell里没有> 和< ,会被当作尖括号,只有-ge,-gt,-le,lt。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值