如何将命令的输出分配给变量?

时间:2010-03-16 13:30:25

标签: bash variables operators variable-assignment

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

awk '{print $7}' temp

它给出0.54546

我想把它变成一个变量,所以我试过了:

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

但我得到

Syntax error: redirection unexpected

你能告诉我为什么,以及做这项任务最简单的方法是什么?

由于

3 个答案:

答案 0 :(得分:3)

您可以将命令替换为:

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

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

这会将值0.54546分配给变量ENE

答案 1 :(得分: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]}

答案 2 :(得分:0)

一般来说,Bash对空间有点敏感(要求他们有些地方,如果他们被添加到其他地方就会破坏),在我看来太糟糕了。请记住,在等号的两边不应有空格,美元符号后应该没有空格,括号应该用空格(如此)(不是这样)。

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