将shell命令的输出分配给变量[重复]

Posted

技术标签:

【中文标题】将shell命令的输出分配给变量[重复]【英文标题】:Assign output of a shell command to a variable [duplicate] 【发布时间】:2016-09-08 18:04:22 【问题描述】:

我想将 shell 命令的输出分配给一个变量。

如果我直接回显命令,代码会正确执行:

for ((i=0; i<$#result[@]; i++)); do
    echo $result[$i] | awk 'print $1'
    done

但是,如果我将它分配给一个变量,

size=`$result[$i] | awk 'print $1'`
echo $size

或者

size=$($result[$i] | awk 'print $1')
echo $size

他们不工作。

我该如何解决?

【问题讨论】:

虽然这或多或少是一个拼写错误,但规范是 How do I set a variable to the output of a command in Bash?。尽管标题不明确,但它涵盖了(变量)输入到外部命令(在(Bash)变量中)的情况。 【参考方案1】:

你错过了echo

size=$(echo $result[$i] | awk 'print $1')

这里将echo 的输出作为输入传递给awk

$() 或反引号只是运行命令并将其分配给一个变量,所以当你写的时候

$result[$i] | awk 'print $1'

它不会给你任何东西,因为没有任何东西作为输入传递给awk 命令。

【讨论】:

非常感谢您的帮助。我在这里被困了 4 个小时...感谢您提供如此详细的解决方案。 再次感谢您的介绍

以上是关于将shell命令的输出分配给变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Bash 命令的输出分配给变量? [复制]

将AWK结果分配给变量[重复]

awk的结果怎么赋值给Shell变量

sh 将子shell命令的退出代码分配给变量

怎么把shell后台输出赋值给变量

怎么把shell后台输出赋值给变量