我写了以下脚本:
#!/bin/bash
if [ $# -eq 0 ]
then
read current_dir
else
current_dir=$1
fi
function print_tree_representation ()
{
for file in `ls -A $1`
do
local times_p=$2
while [ $times_p -gt 0 ]
do
echo -n "----"
times_p=$(( $times_p - 1 ))
done
echo $file
if test -d $file
then
local new_path=$1/$file
local new_depth=$(( $2 + 1 ))
print_tree_representation $new_path $new_depth
fi
done
}
print_tree_representation $current_dir 0
用于打印作为参数传递的目录的树状结构。然而,它并没有超出第二层深度。我不知道出了什么问题。
答案1
问题出在这一行:
if test -d $file
$file
您从中提取的内容ls -A
不包含完整路径。您可以通过将该行替换为来修复它
if test -d "$1/$file"
还有另一个错误,如果文件名中有空格,它就会到处乱。将文件名放在引号中。