![](/img/trans.png)
[英]Pandas: if row in column A contains strings “x”,“y”,“z”, write “ “x_”,“y_”,“z_” to row in column B
[英]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.