关于read的疑惑

关于read的疑惑

复制内容到剪贴板
代码:
[No.519 09:38:42 work ]# cat read_test.sh
#!/bin/bash

for NUM in 1 2 3 4 5 6
do
        echo $NUM
done | while read num
do
#        read -p "Enter a NUM: "
#        echo $REPLY
        echo $num
done

[No.520 09:38:49 work ]# ./read_test.sh
1
2
3
4
5
6
运行正常
但请注意去掉注释后的结果
复制内容到剪贴板
代码:
[No.528 09:41:13 work ]# cat read_test.sh
#!/bin/bash

for NUM in 1 2 3 4 5 6
do
        echo $NUM
done | while read num
do
        [B]read -p "Enter a NUM: "[/B]
        echo $REPLY
        echo $num
done

[No.529 09:41:16 work ]# ./read_test.sh
2
1
4
3
6
5
我的本意是想接收键盘输入
显然
read却去读管道了
请如在这种情况下
如何正确接收键盘输入?      
read 很笨的,它只知道从 stdin 获取数据,但不知道 stdin 到底是 pipe 还是 keyboard      
原来如此
多谢dearvoid的及时解答      
还是这种方法好
不过还是比较喜欢管道
复制内容到剪贴板
代码:
[No.570 13:54:59 test ]# cat read_test2.sh
#!/bin/bash

for num in `for NUM in 1 2 3 4 5 6
                        do
                                echo $NUM
                        done`
do
        read -p "Enter a NUM: "
        echo $REPLY
        echo $num
done

[No.571 13:55:03 test ]# ./read_test2.sh
Enter a NUM: 11
11
1
Enter a NUM: 22
22
2
Enter a NUM: 33
33
3
Enter a NUM: 44
44
4
Enter a NUM: 55
55
5
Enter a NUM: 66
66
6