linux shell 跳过read命令,怎么解决?

shell脚本中的命令如下
d1=/home/hzh/test/data/app
d2=/home/hzh
ls -l $d1ls $d1 | while read l1
do
read -p "1 or 0" y1
if [ $y1 = y ]
then
ln -s $d1/$l1 $d2/$l1
echo 'done'
fi
done
在执行这个脚本时,do下面的read命令被跳过,没有提示输入。怎么办啊?

read默认从标准输入读取数据,而这里的管道符会将前面ls命令的结果作为标准输入传递给read命令。所以只要前面还有数据,read命令就不会等待用户输入。

 

其实,这里可以用 for ... in ... 结构来替代while循环。

for l1 in `ls $d1`
do
    read -p "1 or 0" y1
    ......
done

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-26
就像pause似的,但是不用要字 命令越短越好
就像pause似的,但是不用要字 命令越短越好
第2个回答  2014-10-26
ls -l $d1ls $d1 这一句什么意思?有错误吧。
相似回答