我有这个
var1='hello'
var2='world'
我在变量中需要helloworld
。如果我写
print $var1$var2 # prints "helloworld"
但是当我写作
var3=$var1$var2 # var3 is not "helloworld"
我试过
var3=$(print $var1$var2)
var3='$var1$var2'
当然,唯一一个我没试过的是好的但是哪一个?
在发现好奇之后编辑:
如果我完全像我写的那样
var3=$var1$var2
print $var3 # prints "helloworld"
但实际上我写这篇文章是为了用其他变量,我自己的变量来恢复我的问题。区别在于$var1
是awk
命令从文件中提取此文本的结果。
我试着解释一下:
myvar1
我真正使用的变量是这样的:
myvar1=awk -F"/" '${print $1}' $dir_path
不喜欢这个
myvar1=world
那只是问你这个问题。我不知道为什么,但这似乎很重要。
如果我对使用var3=$var1$var2
的变量做同样的事情,它就会吸引人。为了用我的变量得到正确的结果,我刚刚发现我必须使用:
myvar3=echo$myvar1$myvar2
print $myvar3 # gives the right result.
另一方面,如果我这样做
var3=echo$var1$var2
print $var3 # prints "echohelloworld"
如何解释?
我使用的是Mac OS X,命令行终端和Zsh。
答案 0 :(得分:0)
如果你有
var1='hello'
var2='world'
其中任何一项都会产生print $var3 # prints "helloworld"
var3="$var1$var2"
var4=$var1$var2
var5=$(print $var1$var2)
你应该使用第一个。您可以通过打印变量或致电set
来验证:
$ print var3 # prints "helloworld"
$ set|grep var
var1=hello
var2=world
var3=helloworld
var4=helloworld
var5=helloworld
您的编辑说,您使用:myvar1=awk -F"/" '{print $1} $dir_path
。此行缺少$()
:
myvar1=$(awk 'BEGIN { print "hello" }')
echo $myvar1 # prints hello