【问题标题】:Bash - Assigning existing Variable values to a New Variable. New Variable values does not return the assigned valueBash - 将现有变量值分配给新变量。新变量值不返回分配的值
【发布时间】:2021-10-29 14:31:07
【问题描述】:

我想将现有变量的值分配给我的 Bash 脚本中的新变量。 问题在于,一旦将 New 变量分配给现有变量的值,它就会返回 none 而不是返回现有变量值。 (见下面的代码):

VAR1="Hello World"
VAR2="Let's concatenate"

VAR1+="$MyVar" # assigning to a new variable
echo "$VAR1"
echo "$MyVar" # This is the issue --> no value returned (intention is to return "Hello World")

此命令的输出 (echo "$MyVar") 是:

  • VAR1=
  • 回声''

【问题讨论】:

  • 您的屏幕截图显示您正在执行VAR1="$MyVar",而不是VAR1+="$MyVar'。 (两者都是错误的,但这里有一个不一致的地方。)

标签: bash shell variables sh


【解决方案1】:

您没有定义一个名为MyVar 的新变量。您将由不存在的变量扩展产生的空字符串附加到 VAR1 的值。

你想要

MyVar=$VAR1

得到想要的结果。


+=做什么的一个例子:

$ x=foo
$ echo "$x"
foo
$ x+=bar
$ echo "$x"
foobar

【讨论】:

  • 非常感谢@chepner 的澄清
  • 这是否意味着如果我将空字符串(例如:MyVar)连接到具有某些值的现有字符串,它将返回 None?就像在 SQL 中将 NULL 附加到一个值时它返回 NULL?
  • @enigma6205 不,事实并非如此。将空字符串附加到变量将使变量保持不变。在您的原始帖子中,$MyVar 从未在任何地方设置,因此它是空的。
  • x=foo; x+=""; echo "$x" 将输出foo。这很容易检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
相关资源
最近更新 更多