Bash
轉義 _$(下劃線和美元符號)
我有這個 Bash 腳本
for i in 1 2 3 do for j in 4 5 6 do echo "hello_$i_$j" done done
但它列印
你好
_4你好_5 你好
_6
三次,而(你可能猜到)我想要hello_1_4,hello_1_5等。
僅轉義下劃線或僅轉義美元符號不起作用。有任何想法嗎?
謝謝!
將行:添加
set -u
到程式碼的頂部。然後重新執行,看看你得到了什麼。變數
i_
未綁定的錯誤,意味著未在任何地方定義。現在為什麼 bash 談論這個變數i_
?你沒有在任何地方定義它。仔細查看您的 echo 語句:"hello_$i_$j"
$i 之後的下劃線被視為變數i_
,因為_
它是有效的變數名稱標識符字元。因此,為了防止 bash 這樣做,您需要將變數名括在大括號中
{}
,例如,echo "Hello_${i}_${j}"
大括號可防止變數名溢出並與_
. 注意:變數上的大括號$j
是可選的,因為它"
用於分隔的目的。