【问题标题】:Unable To Concatenate 2 Linux Variables Into 1 [duplicate]无法将 2 个 Linux 变量连接成 1 个 [重复]
【发布时间】:2023-03-18 03:15:01
【问题描述】:

我正在尝试将 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

【问题讨论】:

  • 没有$env_abr1_这样的变量(注意训练下划线)
  • 哦,我明白了。有没有办法通过没有空格的下划线连接 $env_abr1 和 $cnt_abr1?
  • 请修正你的输出:ideone.com/4kxGA0
  • 具有讽刺意味的是,除了最终的 mcve 之外,您的所有示例都可以工作

标签: linux bash ssh environment-variables


【解决方案1】:

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

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

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

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

【讨论】:

  • 太棒了!这行得通。我也找到了另一种方法,即 sample1="$env_abr1"_"$cnt_abr1"
猜你喜欢
  • 2021-05-19
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多