将 shell 命令的输出赋值给变量

3

我希望能将一个shell命令的输出赋值给一个变量。

如果直接使用echo命令,代码会执行正确:

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

他们没在工作。

我该怎么修复它?


虽然这更多或少是一个打字错误,但规范的应该是 如何在Bash中将变量设置为命令输出?。尽管标题不够具体,但它涵盖了将(变量)输入到外部命令**(在(Bash)变量中)的情况。 - Peter Mortensen
1个回答

6
你漏掉了 echo
size=$(echo ${result[$i]} | awk '{print $1}')

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

$()或反引号只是运行命令并将其赋值给变量,因此当您只写时

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

如果没有任何输入被传递给awk命令,它将不会产生任何结果。


1
非常感谢您的帮助。我在这里卡了4个小时... 非常感谢您对解决方案的详细介绍。 - ITnewbie
1
我想再次感谢您的演示。 - ITnewbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接