将 shell 命令的输出分配给变量

ITn*_*bie 3 linux shell

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

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

for ((i=0; i<${#result[@]}; i++)); do
    echo ${result[$i]} | awk '{print $1}'
    done
Run Code Online (Sandbox Code Playgroud)

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

size=`${result[$i]} | awk '{print $1}'`
echo $size
Run Code Online (Sandbox Code Playgroud)

或者

size=$(${result[$i]} | awk '{print $1}')
echo $size
Run Code Online (Sandbox Code Playgroud)

他们不工作。

我该如何解决?

nu1*_*73R 6

你错过了 echo

size=$(echo ${result[$i]} | awk '{print $1}')
Run Code Online (Sandbox Code Playgroud)

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

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

${result[$i]} | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

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