无法将2个Linux变量合并为1个

时间:2019-01-18 03:09:22

标签: linux bash ssh environment-variables

我正在尝试将linux tectia SSH中的两个变量串联为一个变量,并用"_"分隔。由于某些原因,仅打印出两个变量之一。

我尝试通过" "进行连接,例如:

sample1="$var1_$var2"

sample1="$var1 _ $var2"

并且我尝试了直接连接,例如:

sample1=$var1_$var2

将感谢您提供的任何帮助!

cnt_abr1=ab
cnt_abr2=cd
cnt_abr3=ef
env_abr1=a
env_abr2=b
sample1="$env_abr1_$cnt_abr1"
sample2=$env_abr2_$cnt_abr3
echo $sample1
echo $sample2

输出:

 _ ab
ef

1 个答案:

答案 0 :(得分:0)

由于下划线实际上是字母,因此bash无法知道变量名何时结束以及文字下划线开始。在这种情况下,引用变量的正确方法是使用${...},它明确地将名称与命令行的其余部分分隔开来:

sample1="${env_abr1}_${cnt_abr1}"
sample2=${env_abr2}_${cnt_abr3}

在两种情况下,名字都不需要特殊处理。正如您在评论中指出的那样,任何其他(从字面上看是有效的)非字母字符也可以这样做:

sample1="$env_abr1"_"$cnt_abr1"
sample2="$env_abr2"_"$cnt_abr3"