问题描述
- 这个程序为什么会死循环啊,求教。》》
-
#!/bin/bash
function change()
{
ls -l > /home/wang/ab.txt #重定向
sed -i '1d' /home/wang/ab.txt
cat /home/wang/ab.txt >> /home/wang/b.tx
while read line #读取每一行
do
t=${line:0:1} #截取文件类型
#echo $t
b=${line##*' '} #截取文件全名
if [ "$t" != "d" ];then
c=${b%.*} #截取文件名
d=${b##*.} #截取文件后缀名
a=${line#*' '}
a=${a#*' '}
a=${a%%' '*} #从目录中截取所有者名
mv $b $c[$a].$d
else
cd $b
change
fi
done < /home/wang/b.txt
}
if [ $# -eq 1 ];then
cd $1 #如果有参数,则进入目录
fi
change
exit
程序的功能是递归进入目录,把文件名后缀前加上所有者的名字,如a.txt,改为a[owner].txt,是递归也就是如果目录里边还有目录,要进去
解决方案
必定是没有满足退出条件,这个你得仔细查查
解决方案二:
详解程序死循环
时间: 2024-10-29 07:00:24