转义_$(下划线和美元符号)

转义_$(下划线和美元符号)

我有这个 Bash 脚本

for i in 1 2 3
do
    for j in 4 5 6
    do
        echo "hello_$i_$j"
    done
done

但它打印

你好_4
你好_5
你好_6

三次,而(你可能会猜到)我想要你好_1_4,你好_1_5, ETC。

仅转义下划线或仅转义美元符号不起作用。有任何想法吗?

谢谢!

答案1

将行:添加set -u到代码顶部。然后重新运行,看看会得到什么。

变量未绑定的错误i_,意味着未在任何地方定义。现在为什么 bash 谈论这个变量i_?您没有在任何地方定义它。仔细查看您的 echo 语句:"hello_$i_$j"$i 后面的下划线被视为变量,i_因为_它是有效的变量名称标识符字符。

因此,为了防止 bash 这样做,您需要将变量名称括在大括号中{},例如 as,echo "Hello_${i}_${j}"大括号可防止变量名称溢出并与_.注意:变量上的大括号$j是可选的,因为它"用于分隔的目的。

相关内容