这可能是一个非常愚蠢的问题;在一个bash脚本中,例如给出输出;如何将命令的输出分配给变量?
awk '{print $7}' temp
它给0.54546
我想给这一个变量,所以我尝试:
read ENE <<< $(awk '{print $7}' temp)
,但我得到
Syntax error: redirection unexpected
你能告诉我为什么,做这个任务最简单的方法是什么?
感谢
这可能是一个非常愚蠢的问题;在一个bash脚本中,例如给出输出;如何将命令的输出分配给变量?
awk '{print $7}' temp
它给0.54546
我想给这一个变量,所以我尝试:
read ENE <<< $(awk '{print $7}' temp)
,但我得到
Syntax error: redirection unexpected
你能告诉我为什么,做这个任务最简单的方法是什么?
感谢
你的语法应为
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]}
你可以做命令替换为:
ENE=$(awk '{print $7}' temp)
或
ENE=`awk '{print $7}' temp`
这将价值0.54546
赋给变量ENE
太好了,非常感谢!顺便说一下,有人知道为什么前一个没有炒锅? – flow 2010-03-16 13:36:08
通常,Bash对空间比较敏感(要求他们有一些地方,如果他们加了,他们就会被打断编辑到其他地方),在我看来这太糟糕了。只要记住,应该有上等号的两边没有空格,不应该有空间后一个美元符号和括号应该用空格(像这样)内衬(不是这样)。
`命令`和$(命令)是同样的东西,但是$(这个版本可以是$(嵌套)),而“这个版本可以嵌入到字符串中。”
尽管很尴尬,'read ENE <<< $ (awk'{print $ 7}'temp)'适合我,所以我无法说出那里是什么东西?你确定你正在使用bash而不是其他shell吗?你用的是什么'bash --version'? – 2010-03-16 13:51:12