有什麼區別?爲什麼這些工作:
echo $LOGNAME #prints username
echo "$(logname)" #prints username
但這不是:
echo "$(LOGNAME)" #prints command not found.
有什麼區別?爲什麼這些工作:
echo $LOGNAME #prints username
echo "$(logname)" #prints username
但這不是:
echo "$(LOGNAME)" #prints command not found.
logname
是一個命令。
LOGNAME
是一個變量。
$(logname)
因爲存在logname命令。
$(LOGNAME)
嘗試運行不存在的命令LOGNAME
。
$LOGNAME
是一個變量。 logname
是一個命令。當你做
echo $LOGNAME
你是呼應變量,而當你做
echo "$(logname)"
您迴盪在執行命令的結果。正好是輸出結果相同的情況。
如果你做env | grep LOGNAME
,你會看到$LOGNAME
是一個環境變量,如果你做which logname
你會看到可執行文件的路徑。但是,如果你做which LOGNAME
,你會看到沒有輸出。 echo $?
顯示該命令的退出狀態爲1,這意味着不能找到可執行文件。
巧合的是,你可以用$PWD
和pwd
做同樣的事情。
它恰好與'$ LOGNAME'和'$(logname)'輸出相同。你可以用'env'看到'$ LOGNAME'這樣的環境變量,而'logname'是一個你可以通過'man logname'獲得信息的命令。 – fedorqui 2014-10-31 10:08:38
@fedorqui:你的意思是'$ LOGNAME'有時可以不同於'$(logname)'? – mrdaliri 2014-10-31 10:12:48
它可以不同,因爲你可以爲你設置'LOGNAME'。試試看:'LOGNAME = blblbl;回聲「$ LOGNAME」'。 – 2014-10-31 10:16:39