关于bash:无法将2个Linux变量连接到1个

Unable To Concatenate 2 Linux Variables Into 1

本问题已经有最佳答案,请猛点这里访问。

我试图将LinuxTectiassh中的两个变量连接到一个变量中,由"_"分隔。出于某种原因,两个变量中只有一个被打印出来。

我试图通过""连接,例如:

1
sample1="$var1_$var2"

1
sample1="$var1 _ $var2"

我尝试直接连接,例如:

1
sample1=$var1_$var2

希望能得到帮助!

1
2
3
4
5
6
7
8
9
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

输出:

1
2
 _ ab
ef


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

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

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

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