我是初学者到Shell脚本。Shell脚本中字符串串联错误
我已经使用了一个变量来存储值A="MyScript"
。我试图在后续步骤$A_new
中连接字符串。令我惊讶的是它没有工作,并且$A.new
工作。
你能帮我理解这些细节吗?
由于
我是初学者到Shell脚本。Shell脚本中字符串串联错误
我已经使用了一个变量来存储值A="MyScript"
。我试图在后续步骤$A_new
中连接字符串。令我惊讶的是它没有工作,并且$A.new
工作。
你能帮我理解这些细节吗?
由于
一个变量可以包含字母(a到z或A〜Z),数字(0到9)或下划线字符(的名称_)。
Shell不需要像编程语言那样的任何变量声明,如C
,C++
或java
。所以当你编写$A_new
shell时认为A_new
是一个变量,你没有分配任何值,因此它变为空值。
要实现你提到的作为: ${A}_new
它总是一个很好的做法后$
标志括在大括号的变量名,以避免这样的情况。
谢谢@Inderdeep。感谢您的解释。 – Prradep
壳牌variable names由字母字符,数字和下划线的。
3.231名称
在shell命令语言,从便携字符集仅下划线,数字和alphabetics组成的字。名字的第一个字符不是数字。
所以,当你写$A_new
shell解释下划线(和new
)作为变量名的一部分,并且扩大了可变A_new
。
一个句点在变量名中无效,因此当shell解析变量$A.new
以便在该句点处停止并扩展变量A
。
${A}
语法的设计目的是使其按照预期工作。
您可以使用任何下列正确有这个工作(以优选性的粗糙顺序):
echo "${A}_new"
echo "$A"_new
echo $A\_new
最后是最不可取因为你不能引用整个字符串(否则\
不会被删除。因此,因为你基本上应该总是引用你的变量扩展,你最终可能会做echo "$A"\_new
,但这并没有什么不同,然后点2最终为什么要打扰。
发生这种情况是因为下划线是变量名中的有效字符。 尝试这种方式: $ {A} _new或 “$ A” _new
雅。 '$ A_new',实际上是'$ {A_new}'。 –
你的意思是'$ {A} _new'而不是'{$ A} _new'。 –
谢谢@Rajesh。我没有得到你的陈述罗宾。 – Prradep
在[这个问题](http://stackoverflow.com/questions/4181703/how-can-i-concatenate-string-variables-in-bash)中的信息有帮助吗? –
@MichaelScarn虽然不是我一直在寻找,但感谢分享这样好的信息。 – Prradep