从管道输出到一个read命令中,使用管道echo输出到read会失败,然而使用管道cat输出看起来能够正常的运行
cat file1 file2 |
while read line
do
echo $line
done
但是:如下面的例子 cat到管道就可能出些问题
有个管道输出到read中的问题:
1 #!/bin/bash
2 #readpipe.sh
3
4
5 last="(null)"
6
7 cat $0 |
8 while read line
9 do
10 echo "{$line}"
11 last=$line
12 done
13
14 printf "\nAll done,last:$last\n"
15
16
17
18 exit 0
~
该脚本的输出如下:
{#!/bin/bash}
{#readpipe.sh}
{}
{}
{last="(null)"}
{}
{cat $0 |}
{while read line}
{do}
{echo "{$line}"}
{last=$line}
{done}
{}
{printf "nAll done,last:$lastn"}
{}
{}
{}
{exit 0}
All done,last:(null)
打印出了多余的大括号。
find命令输出到管道:
find $1 \(-name "*$2" -o -name ".*$2"\) -print |
while read f
do
。。。。
done
阅读(3909) | 评论(0) | 转发(1) |