【问题标题】:Put print result in a variable or concat text variable将打印结果放入变量或 concat 文本变量中
【发布时间】:2013-08-02 17:43:45
【问题描述】:

我有这个

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"

但实际上我写这个是为了恢复我对其他变量的问题,我自己的变量。不同之处在于$var1awk 命令从文件中提取此文本的结果。

我试着解释一下:

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。

【问题讨论】:

  • 没人回答吗?
  • 欢迎来到stackoverflow。您最初的主张很可能是错误的。请单击编辑链接并相应地更新/删除它。此外,我不明白awk 部分,您能验证一下吗?
  • 我编辑了我的问题,以准确说明我对 awk 部分的意思。让我知道我是否足够清楚

标签: macos variables terminal zsh concat


【解决方案1】:

如果你有

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

【讨论】:

  • 你说得对,我编辑的是:awk -F"/" '${Print $1}' $dir_path
  • 问题是 print $var3 运行良好(使用 var1)但 print $myvar3 不行(因为 myvar1 似乎不同)
  • set|grep myvar1 的输出是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
相关资源
最近更新 更多