ITPub博客

首页 > Linux操作系统 > Linux操作系统 > shell 变量赋值问题

shell 变量赋值问题

原创 Linux操作系统 作者:babyyellow 时间:2022-01-28 09:37:02 0 删除 编辑


大家写代码的时候,  需要注意一个问题. 

尤其是 shell 脚本的变量, 

如果变量 的取值  是由 命令 计算得的的. 

比如 : 


file=`ls   -rt  |head -1`  

类似这种计算问题 给 变量赋值 .

如果变量还需要参与下一步操作. 

需要验证  这个 $file  是空值 . 

比如   rm  -rf  $file  

$file  =''   

整个目录会清空 


if  [  "X$file"  =  "X" ] 
then 

              ##变量为空值
             exit 

else  

         do  something ..........

fi



 if [ -z "$a" ]

then   

        echo  xx

 fi
xx

 if [ -n "$a" ]

 then  

         echo  xx

fi



这里是有坑的

test  这个命令  关于  -n  -z  的说明. 

       -n STRING
              the length of STRING is nonzero


       -z STRING
              the length of STRING is zero

$ a=
$ echo $a
$ if [ -n $a ]; then   echo  xx; fi
xx
$ if [ -z $a ]; then   echo  xx; fi
xx
$ if [ -z "$a" ]; then   echo  xx; fi
xx
$ if [ -n "$a" ]; then   echo  xx; fi   
-n   "$file"  是可以正确判断  变量长度为 0 . 
-n   $file   不能正确判断   变量长度为 0 . 
$ bash 
$ if [ -z $a ]; then  echo xx; fi    
xx
$ if [ A$a = 'A' ]; then  echo xx; fi
xx
$ if [ -n $a ]; then  echo xx; fi        
xx
$ if [ -n "$a" ]; then  echo xx; fi 
$ if [ -z "$a" ]; then  echo xx; fi       
xx
$ echo $a
$ echo "$a" 
$ echo -e "$a"



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-2854373/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: mysql 并发复制
请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908700