为什么此bash字符串连接失败?

时间:2019-02-28 19:29:13

标签: string bash concatenation

#!/bin/sh

VAR_A=100
VAR_B=200

FOO="$VAR_A_$VAR_B"; # 200
BAZ="$VAR_Ax$VAR_B"; # 200

echo $FOO; # 200 instead of 100_200
echo $BAZ; # 200 instead of 100x200

我认为它应该起作用的原因是我将其视为sprinf或任何类似C的字符串格式化程序(%s_%s或%sx%s)

1 个答案:

答案 0 :(得分:2)

问题在于_是变量名中的有效字符。为了区分这一点,请使用花括号:

FOO="${VAR_A}_$VAR_B"

为了保持一致,您可以在任何地方使用花括号:

FOO="${VAR_A}_${VAR_B}"