如何在自己的行中输出这个序列中的每个数字?

时间:2015-03-19 10:10:23

标签: bash shell loops

我是一般的编程新手,我的老师正在用简单的bash脚本启动我。 这就是我所做的,但它没有用。

seq 1 3 | while read a; do
    echo 123
done

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如评论中所示,您要做的是每次都使用seq的输出。

因此,使用echo "$a"(很好引用!):

seq 1 3 | while read a; do
    echo "$a"
done

顺便说一句,为了安全起见,最好使用IFS=(输入字段分隔符)和-r进行读取以防止出现奇怪的情况。此外,您可以通过提供间接< <(seq...)的输入来避免管道。最后,seq 1 3seq 3相同,因为1是默认的起点。一起来:

while IFS= read -r a
do
echo "$a"
done < <(seq 3)

答案 1 :(得分:0)

echo命令是问题所在。该示例应该看起来像

seq 1 3 | while read a; do
    echo $a
done

您应该打印从echo通过管道读取的各个序列值,而不是尝试在seq的每次使用中打印所有序列值。