0

我有这个

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

那只是问你这个问题。我不知道为什么,但这似乎很重要。

如果我对我的变量做同样的事情 with 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。

4

1 回答 1

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
于 2013-08-03T16:27:58.853 回答