我碰到一個包含如下語句shell腳本,
if [ $val -eq $? ]
是什麼意思$?
這裏?
我碰到一個包含如下語句shell腳本,
if [ $val -eq $? ]
是什麼意思$?
這裏?
$?
返回最後完成的命令的狀態。 狀態0告訴你,一切都完成了。
另外$
標誌是一個特殊的符號 - 在這種情況下,$val
提取由變量val
這是上一個命令的退出狀態的值。如果成功,這是0
。
什麼$實際持有的價值?在這裏呢?
$?是的出口狀態的最後結果... 0是默認的「全成」
bash# ls *.*
bash# echo $?
bash# 0
bash# ls /tmp/not/existing/
bash# echo $?
bash# 2
也許它不應該打擾我,但「0 == True」這個事實真的磨礪了我的裝備。 – jmracek
我發現link是非常有用的,是最好的答案。它包括與樣本清楚地表達。
ls *.*
或ls
會產生相同的結果。含義在當前目錄中顯示具有任何擴展名的零個或多個文件。
echo $?
會顯示退出狀態。如果最後一條命令至少顯示一個文件,則退出狀態將爲零(成功)。
不完全正確:'ls *。*'會過濾當前目錄的內容,只顯示帶有句點的文件和目錄;對於目錄它將顯示內容(可能取決於實現)。同樣看下面的命令'mkdir test && cd test && ls; echo「$?」'會返回0.但是,'mkdir -m -r wo_dir && cd wo_dir && echo「test」> 1.txt && ls; echo「$?」 '即使文件被創建,也會返回1,並且消息'ls:。:Permission denied'。 – artdanil
[這裏是你的答案] [1]可以匹配你的問題 [1]:http://stackoverflow.com/questions/7101995/what-does-if-eq-0- shell-scripts?answertab = active#tab-top –
可能重複[什麼是特殊的美元符號shell變量?](http://stackoverflow.com/questions/5163144/what-are-the-special -dollar-sign-shell-variables) – hammar