az0745
一个死循环的问题
while [ -f $1 ]
do
echo $1
shift
done
看上去没问题。但运行是个死循环。请高手解答。谢谢。
zhangshebao
while [ -f "$1" ]
当$1是存在的文件时循环
while [ $1 ]
不管$1是不是文件,直要去除前后空格后长度不为零,它都循环,直到$1为空.
两者不同啊.
原因不是说了吗,当$1为空时,[ -f $1 ]就成了[ -f ],后者为真,所以就死循环了啊.
要养成位置参数加引号再判断的习惯.不加引号,当实际参数含空格或特殊符号时,程序就会出错了.