2010-03-16 99 views
1

这可能是一个非常愚蠢的问题;在一个bash脚本中,例如给出输出;如何将命令的输出分配给变量?

awk '{print $7}' temp 

它给0.54546

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

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

,但我得到

Syntax error: redirection unexpected 

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

感谢

+1

尽管很尴尬,'read ENE <<< $ (awk'{print $ 7}'temp)'适合我,所以我无法说出那里是什么东西?你确定你正在使用bash而不是其他shell吗?你用的是什么'bash --version'? – 2010-03-16 13:51:12

回答

2

你的语法应为

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

可以将该值直接分配以及

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

也可以使用壳

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

也可以读入阵列

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

你可以做命令替换为:

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

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

这将价值0.54546赋给变量ENE

+0

太好了,非常感谢!顺便说一下,有人知道为什么前一个没有炒锅? – flow 2010-03-16 13:36:08

0

通常,Bash对空间比较敏感(要求他们有一些地方,如果他们加了,他们就会被打断编辑到其他地方),在我看来这太糟糕了。只要记住,应该有上等号的两边没有空格,不应该有空间后一个美元符号和括号应该用空格(像这样)内衬(不是这样)。

`命令`和$(命令)是同样的东西,但是$(这个版本可以是$(嵌套)),而“这个版本可以嵌入到字符串中。”