我无法理解 bash 脚本结果

Ham*_*deh 2 bash shell-script

这是脚本:

    echo '1 2 3 4 5 6' | while read a b c ;do
    echo result: $c $b $a;
    done
Run Code Online (Sandbox Code Playgroud)

结果是 3 4 5 6 2 1 谁能解释一下为什么?

Mic*_*mer 6

read将标准输入的每一行分解成单词,就像您在编写命令时 shell 所做的那样。之后

第一个词分配给第一个名字,第二个词分配给第二个名字,依此类推,剩余的词及其中间分隔符分配给姓氏

在您的情况下,a分配了值 1,b分配了值 2,并c获得了“3 4 5 6”行的其余部分。您打印出c( 3 4 5 6),然后是b( 2),然后是a( 1),从而得到您所看到的输出。

在这种情况下,循环没有做任何事情,因为从您的第一个echo.


Jan*_*nis 5

行上的最终数据将放在最后一个变量中,即c包含“3 4 5 6”。所以你可能想要:

echo '1 2 3 4 5 6' | while read a b c rest ;do
echo result: $c $b $a;
done
Run Code Online (Sandbox Code Playgroud)

并忽略变量rest