簡體   English   中英

如何在 Bash 腳本中回顯“$x_$y”?

[英]How to echo “$x_$y” in Bash script?

非常有趣的是,如果您打算使用代碼在 Bash 中顯示0_1

x=0
y=1
echo "$x_$y"

那么它只會顯示

1

我試過echo "$x\\_$y"但它不起作用。

我怎樣才能回顯$x_$y的形式? 我將在文件名字符串上使用它。

因為變量名中允許有下划線,命令:

echo "$x_$y"

正在嘗試回顯${x_} (在您的情況下可能是空的),然后是${y} 這樣做的原因是因為參數擴展是一種貪婪的操作——它會在$之后使用盡可能多的合法字符來形成變量名。

bash聯機幫助頁的相關部分指出:

$字符引入了參數擴展、命令替換或算術擴展。

要擴展的參數名稱或符號可以用大括號括起來,這是可選的,但用於保護要擴展的變量免受緊跟其后的字符的影響,這些字符可以解釋為名稱的一部分。

使用大括號時,匹配的結束大括號是第一個沒有被反斜杠或帶引號的字符串轉義的} ,並且不在嵌入式算術擴展、命令替換或參數擴展中。

因此,解決方案是確保_被視為第一個變量的一部分,這可以通過以下方式完成:

echo "${x}_${y}"

我傾向於像這樣執行我所有的bash 變量,甚至像這樣的獨立變量:

echo "${x}"

因為它更明確,而且我過去被咬過很多次:-)

這條路:

$ echo "${x}_${y}"
0_1

用大括號把它包起來:

echo "${x}_${y}"

為了逆勢而上,你也可以這樣做:

echo $x'_'$y

您可以將帶引號和未帶引號的部分並排放置,中間沒有空格。 由於'不是變量名的合法字符,bash 將僅替換$x :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM