我无法理解 bash 脚本结果

我无法理解 bash 脚本结果

这是脚本:

    echo '1 2 3 4 5 6' | while read a b c ;do
    echo result: $c $b $a;
    done

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

答案1

read将每一行标准输入分解为单词一样的方法当您编写命令时 shell 会执行此操作。在那之后:

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

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

在这种情况下,循环没有执行任何操作,因为只有一行可以从第一个echo.

答案2

该行的最终数据将放入最后一个变量中,即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

并忽略变量rest

相关内容