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`