我有一個bash腳本中不起作用的以下功能?BASH:定義變量內的變量?
do_get() {
cmd='<command version="33" cmd="GETINFO" $3</command>'
echo $cmd
}
現在,如果我在CMD變量之前正確的回聲$ 3它回聲出1234執行該時我傳遞的3參數。但是當我做echo $ cmd時它只顯示$ 3。
我試了幾件事情像這樣低於思考其得到條紋出 「$ 3」,但隨後顯示空白 「‘$ 3’」同上
我有一個bash腳本中不起作用的以下功能?BASH:定義變量內的變量?
do_get() {
cmd='<command version="33" cmd="GETINFO" $3</command>'
echo $cmd
}
現在,如果我在CMD變量之前正確的回聲$ 3它回聲出1234執行該時我傳遞的3參數。但是當我做echo $ cmd時它只顯示$ 3。
我試了幾件事情像這樣低於思考其得到條紋出 「$ 3」,但隨後顯示空白 「‘$ 3’」同上
變量不展開裏面的時候單引號。您需要使用雙引號,但是由於您在內部使用了雙引號,因此您需要確保您還記得要將其轉義。
do_get() {
cmd="<command version=\"33\" cmd=\"GETINFO\" $3</command>"
echo $cmd
}
Bash中的單引號可防止變量替換。爲了替換第三個參數,您應該將您的字符串用雙引號引起來。當然,你有雙引號是你的字符串的一部分的問題,所以他們需要用反斜槓轉義:中bash
cmd="<command version=\"33\" cmd=\"GETINFO\" $3 </command>"
較新版本中添加一個-v
標誌的printf
命令,使分配像這樣稍微容易一點,因爲報價減少了。
printf -v cmd '<command version="33" cmd="GETINFO" %d </command' "$3"
我試過以上,仍然出於某種原因$ 3不會顯示。如果我回復3美元我看到它很好。我是def。在這件事上撓撓我的腦袋。 – user3100345
我拿回來,我回聲$ 3這是我的輸入從命令行及其空白? – user3100345
是的,我不知道爲什麼我的論點後失去了功能,但如果我定義一個新的變量arg3 = $ 3和echo $ arg3 cmd =它現在工作正常。太奇怪了。 – user3100345