3 回答

TA貢獻1840條經(jīng)驗 獲得超5個贊
對我來說,我不得不更改“#!/ bin / bash”的標題,但是顯然這對您來說不是問題。
在回顯中,僅打印帶有$ 1的第一個單詞,如果將其更改為$ 2,則將打印第二個單詞(參數(shù)),依此類推。
您可以在引號內(nèi)傳遞名稱,也可以使用$ @打印所有參數(shù)。
解決方案1(帶有$ @):
lbGREEN='\e[1;92m'
NC='\e[0m'
normalMessage="Everything fine"
echo_message() {
echo -e ${lbGREEN}$@${NC}
}
echo_message $normalMessage
解決方案2(帶引號):
lbGREEN='\e[1;92m'
NC='\e[0m'
normalMessage="Everything fine"
echo_message() {
echo -e ${lbGREEN}$1${NC}
}
echo_message "$normalMessage"

TA貢獻1942條經(jīng)驗 獲得超3個贊
您引用的報價有誤。
如果要模擬的行為echo
,您的函數(shù)應接受多個參數(shù),并全部打印出來。目前,它僅評估第一個參數(shù),因此建議$*
改用。您還需要將參數(shù)括在雙引號中以保護任何特殊字符:
echo_message() { echo -e "${lbGREEN}$*${NC}"}
特殊變量$*
將擴展到所有參數(shù),并用空格(或更準確地說,是$ IFS的第一個字符,通常是空格字符)分隔。請注意,您幾乎總是想要"$@"
而不是"$*"
,這是少數(shù)情況也是正確的,盡管如果IFS
將其設置為非標準值,其語義稍有不同。
現(xiàn)在,該函數(shù)支持多個參數(shù),并以綠色打印所有參數(shù),并用空格分隔。但是,我建議您在調(diào)用函數(shù)時也引用該參數(shù):
echo_message "$normalMessage"
盡管$normalMessage
現(xiàn)在可以正確處理其中的空格,但其他特殊字符(如)!
仍需要加引號。
添加回答
舉報