首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将命令的输出赋值给变量?

如何将命令的输出赋值给变量?
EN

Stack Overflow用户
提问于 2010-03-16 21:30:25
回答 3查看 546关注 0票数 1

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

代码语言:javascript
复制
awk '{print $7}' temp

它给出了0.54546

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

代码语言:javascript
复制
read ENE <<< $(awk '{print $7}' temp)

但我得到了

代码语言:javascript
复制
Syntax error: redirection unexpected

你能告诉我为什么吗?做这个作业最简单的方法是什么?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-16 21:35:17

你的语法应该是

代码语言:javascript
复制
read ENE <<<$(awk '{print $1}' file)

您也可以直接赋值

代码语言:javascript
复制
ENE=$(awk '{print $7}' temp)

您还可以使用shell

代码语言:javascript
复制
$ var=$(< temp)
$ set -- $var
$ echo $7

或者您可以将其读入数组

代码语言:javascript
复制
$ declare -a array
$ read -a array <<<$(<file)
$ echo ${array[6]}
票数 2
EN

Stack Overflow用户

发布于 2010-03-16 21:33:07

您可以按如下方式进行命令替换:

代码语言:javascript
复制
ENE=$(awk '{print $7}' temp)

代码语言:javascript
复制
ENE=`awk '{print $7}' temp`

这将为变量ENE赋值0.54546

票数 3
EN

Stack Overflow用户

发布于 2010-03-17 01:53:15

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

嵌套和$( command )是一回事,但是$(这个版本可以是$( embedded in strings. )),而“这个版本可以是embedded in strings.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2454660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档