【问题标题】:How to assign the output of a command to a variable?如何将命令的输出分配给变量?
【发布时间】:2011-01-28 02:52:54
【问题描述】:

这可能是一个非常愚蠢的问题;在 bash 脚本中,给出例如的输出;

awk '{print $7}' temp

它给出 0.54546

我想把这个给一个变量,所以我尝试了:

read ENE <<< $(awk '{print $7}' temp)

但我明白了

Syntax error: redirection unexpected

你能告诉我为什么吗?完成这项任务的最简单方法是什么?

谢谢

【问题讨论】:

  • 虽然很尴尬,但read ENE &lt;&lt;&lt; $(awk '{print $7}' temp) 对我有用,所以我无法说出那里出了什么问题?您确定您使用的是 bash 而不是其他 shell 吗?你用的是什么bash --version

标签: bash variables operators variable-assignment


【解决方案1】:

您可以将命令替换为:

ENE=$(awk '{print $7}' temp)

ENE=`awk '{print $7}' temp`

这会将值0.54546 分配给变量ENE

【讨论】:

  • 太好了,非常感谢!顺便说一句,有人知道为什么前一个没有炒锅吗?
【解决方案2】:

你的语法应该是

read ENE <<<$(awk '{print $1}' file)

你也可以直接赋值

ENE=$(awk '{print $7}' temp)

你也可以使用shell

$ var=$(< temp)
$ set -- $var
$ echo $7

或者你可以将它读入数组

$ declare -a array
$ read -a array <<<$(<file)
$ echo ${array[6]}

【讨论】:

    【解决方案3】:

    一般来说,Bash 对空格有点敏感(在某些地方需要它们,如果它们被添加到其他地方就会中断),在我看来这太糟糕了。请记住,等号两边不应有空格,美元符号不应有空格,括号内应有空格(像这样)(而不是像这样。)

    `command` 和 $( command ) 是一回事,但是 $( 这个版本可以是 $( 嵌套的 ) ) 而“这个版本可以`嵌入到字符串中。`”

    【讨论】:

      猜你喜欢
      • 2011-01-02
      • 2012-02-23
      • 2012-07-16
      • 2017-09-01
      • 1970-01-01
      • 2017-07-21
      • 2010-12-29
      • 2014-01-08
      • 1970-01-01
      相关资源
      最近更新 更多