shell 變數賦值問題

babyyellow發表於2022-01-28


大家寫程式碼的時候,  需要注意一個問題. 

尤其是 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部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2854373/,如需轉載,請註明出處,否則將追究法律責任。

相關文章