当在递归查看目录时,我在ksh93中遇到了一些问题。在ksh93中使用递归时出现的奇怪行为
创建一些文件和目录。
base=/tmp/nonsens
for i in {1..3}
do
mkdir -p ${base}/dir${i}
for j in {1..2}
do
mkdir ${base}/dir${i}/dir${j}
touch ${base}/dir${i}/dir${j}/file${j}
touch ${base}/dir${i}/file${j}
done
done
现在通过它与ksh93脚本。
rdir()
{
typeset dir=$1
for file in `ls $dir`
do
if [ -d $dir/$file ]
then
echo "Directory: $dir/$file"
rdir $dir/$file
else
echo "File : $dir/$file"
fi
done
}
rdir /tmp/nonsens
将同时使用了pdksh创建ksh93的
[email protected]:~> rdir /tmp/nonsens
Directory: /tmp/nonsens/dir1
Directory: /tmp/nonsens/dir1/dir1
File : /tmp/nonsens/dir1/dir1/file1
File : /tmp/nonsens/dir1/dir1/dir2
File : /tmp/nonsens/dir1/dir1/file1
File : /tmp/nonsens/dir1/dir1/file2
File : /tmp/nonsens/dir1/dir1/dir2
File : /tmp/nonsens/dir1/dir1/dir3
这个输出/ bash将创建这个
[email protected]:~$ rdir /tmp/nonsens
Directory: /tmp/nonsens/dir1
Directory: /tmp/nonsens/dir1/dir1
File : /tmp/nonsens/dir1/dir1/file1
Directory: /tmp/nonsens/dir1/dir2
File : /tmp/nonsens/dir1/dir2/file2
File : /tmp/nonsens/dir1/file1
File : /tmp/nonsens/dir1/file2
Directory: /tmp/nonsens/dir2
Directory: /tmp/nonsens/dir2/dir1
File : /tmp/nonsens/dir2/dir1/file1
Directory: /tmp/nonsens/dir2/dir2
File : /tmp/nonsens/dir2/dir2/file2
File : /tmp/nonsens/dir2/file1
File : /tmp/nonsens/dir2/file2
Directory: /tmp/nonsens/dir3
Directory: /tmp/nonsens/dir3/dir1
File : /tmp/nonsens/dir3/dir1/file1
Directory: /tmp/nonsens/dir3/dir2
File : /tmp/nonsens/dir3/dir2/file2
File : /tmp/nonsens/dir3/file1
File : /tmp/nonsens/dir3/file2
是否有人知道一个解决方法吗?或者是否存在一个开关,使ksh93的行为,因为它应该?