[英]script in bash not understood using terminal in Ubuntu 12.04
誰能告訴我該腳本在.sh
文件中表示什么意思:
[ ! -n "$T_R" ] && echo "Message Appear" && exit 1;
編輯:更正三位一體指出的錯誤信息
方括號[ ]
是'test'的別名,用於測試是否滿足條件。 不會使事情復雜化,但是請注意,這與bash shell關鍵字[[ ]]
是離散的(謝謝,請使用Tripleee來清除它!)。 有關更多詳細信息,請參見此帖子。 如今,由於其功能更強大,大多數人似乎都在使用后者。
在方括號之間,腳本正在測試以確定變量"$T_R"
是否為空字符串。
-n
運算符返回true。 !
反轉大小寫(如果結果為true,則測試成功)。 因此,在這種情況下,如果字符串變量"$T_R"
的長度不是"$T_R"
(即,如果該變量是空字符串或不存在),則test
成功(返回0)。 雙與號&&
運算符表示僅在成功的情況下執行后續代碼,因此僅在測試成功的情況下(同樣,如果"$T_R"
為空或未設置)將回顯消息“ Message Appear” 。
最后, && exit 1
表示成功回顯Message Appear消息后退出返回狀態1。
bash
和test
手冊頁在所有這些主題上都非常有幫助,應查閱進一步的詳細信息。
鏈接的&&
是常見的短路習慣用法。
而不是寫作
if true; then
if true; then
echo moo
fi
fi
您可以縮寫為true && true && echo moo
。
echo
通常會成功,因此true && echo moo && exit 1
如果true
成功則將執行echo
和exit
(顯然,它將始終如此)。
(可能在極端的極端情況下, echo
可能會失敗,但是如果發生這種情況,無論如何您都會敬酒,所以我認為嘗試防范這種情況是沒有道理的。)
[
是test
的別名,它是shell腳本的常規比較幫助程序(在Bash中,它甚至是內置的)。 test -n
檢查字符串是否為非空。
!
是一般的否定運算符,因此它將測試轉換為檢查空字符串。
(這有點單調,因為有一個單獨的test -z "$T_R"
專門檢查字符串是否為空。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.