冒號命令是一個空命令。Bash Shell - The:命令
The:構造對於變量的條件設置也很有用。例如,
: ${var:=value}
沒有:,外殼會試圖評估是$ var作爲一個命令。 < = ???
我不太明白上面陳述中的最後一句話。任何人都可以給我一些細節嗎?
謝謝
冒號命令是一個空命令。Bash Shell - The:命令
The:構造對於變量的條件設置也很有用。例如,
: ${var:=value}
沒有:,外殼會試圖評估是$ var作爲一個命令。 < = ???
我不太明白上面陳述中的最後一句話。任何人都可以給我一些細節嗎?
謝謝
嘗試
var=badcommand
$var
你會得到
嘗試
var=
${var:=badcommand}
,你會得到相同的。
即使在執行可變擴展之後,shell(例如bash)也會嘗試在每個命令行上將第一個字作爲命令運行。
唯一的例外是
var=value
其外殼專門對待。
您提供的示例中的技巧是${var:=value}
可以在命令行的任何位置工作,例如,
# set newvar to somevalue if it isn't already set
echo ${newvar:=somevalue}
# show that newvar has been set by the above command
echo $newvar
但我們真的不連想呼應的價值,所以我們想要的東西比
echo ${newvar:=somevalue}
更好。
:
命令讓我們可以在沒有任何其他操作的情況下執行任務。
${var}
自身執行存儲在$var
命令。添加替代參數不會改變這個,所以你用:
來抵消這個。
我想那人網頁作家的意思是
: ${var:=value}
可以作爲一個捷徑,而不是說
if [ -z "$var" ]; then
var=value
fi
-z字符串如果字符串爲空(空字符串),則爲真 – q0987 2011-04-27 16:46:08
試試這個:
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
其他人是否認爲這本身就是一個輕微的悖論? '沒有效果'/'退出狀態:總是成功。這意味着它當然會做某些事情,但沒有明確說明。它可以進行可變的擴展,分配和破壞退出代碼。 – sehe 2011-04-27 18:30:43
是的,幾乎沒有;-) – 2011-04-27 18:41:48
太真。我懷疑這真的解釋給OP – sehe 2011-04-24 22:44:40