나는 다음 스크립트를 작성했습니다.
#!/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"
또 다른 버그가 있습니다. 파일 이름에 공백이 있으면 모든 곳에서 발생합니다. 파일 이름을 따옴표로 묶으십시오.