shell 變數賦值問題
大家寫程式碼的時候, 需要注意一個問題.
尤其是 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell變數命名與賦值變數賦值
- shell中變數的取值與賦值變數賦值
- vue 變數賦值同時改變的問題Vue變數賦值
- Shell變數賦值語句不能有空格變數賦值
- Linux Shell程式設計(7)——變數賦值Linux程式設計變數賦值
- 變數的賦值 指標間接賦值變數賦值指標
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- Shell變數的作用域問題變數
- javascript變數賦值或者重新賦值注意事項JavaScript變數賦值
- 從資料庫返回多條紀錄賦值給shell變數資料庫賦值變數
- 變數的解構賦值變數賦值
- php變數賦值給jsPHP變數賦值JS
- python 多變數賦值Python變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- 物件屬性值賦給變數物件變數
- 給物件引用變數賦值(轉)物件變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- c#小灶——常量、變數和賦值C#變數賦值
- AC-DMIS 5.3 V變數賦值變數賦值
- 再說mysql中的變數賦值MySql變數賦值
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- 函式呼叫引數變數傳值的問題函式變數
- [基礎問題] 陣列賦值陣列賦值
- JS中的變數賦值深入理解JS變數賦值
- 列表切片賦值給另一個變數賦值變數
- go語言變數的宣告與賦值Go變數賦值
- 自己對Java中if變數賦值的理解Java變數賦值
- ES6:變數的解構賦值變數賦值
- ES6:變數的結構賦值變數賦值
- ES6 變數的解構賦值變數賦值
- ECMAScript6變數的解構賦值變數賦值
- 把匿名函式賦值給變數,通過變數來呼叫函式賦值變數
- 把匿名函式賦值給變數,透過變數來呼叫函式賦值變數
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- Linux Shell Awk獲得外部變數(變數傳值)簡介Linux變數
- 問題分享:Js引用型別賦值JS型別賦值
- stuts2的賦值問題 1賦值