제가 파일이나 디렉토리 모드를 바꾸는 스크립트를 짜고 있는데 디렉토리 구조를
찾아낼 방법을 알 수가 없어서 무식하게 디렉토리가 검사 될 때 마다 변수에 집어 넣었다
가 다시 그걸 읽어서 디렉토릴 바꿀려고 하는데, 찾아낸 디렉토릴 변수에 저장을 할 수는
있는데 다시 변수로부터 읽어 올 방법을 몰라서 질문 드립니다. 먼저 스크립트를 보시고
문제를 더 자세히 설명 드리죠. #!/bin/sh
count=0
dir_tree() {
local dir_v="$file_name"
temp_dir=dir_v
eval dir$count='$'$temp_dir
echo "current dir is $dir$count"
count=$(($count+1))
}
for file_name in *
do
if [ -d "$file_name" ];then
chmod 755 "$file_name"
dir_tree
dir_flag=1
elif [ -f "$file_name" ] && [ "$0" = "$file_name" ];then
echo "$file_name is $0 itselfe"
echo "$(ls -l "$file_name")"
elif [ -x "$file_name" ];then
echo "$file_name" is excutable
else
chmod 644 "$file_name"
fi
done
count=$(($count-1))
echo "End dir $dir0, $dir1, $dir2, $dir3"
디렉토릴 저장하는 변수는 저 위에 dir_tree()함수 에서 dir$count로
count 가 증가 할 때마다 dir0, dir1, dir2....이런식으로 생성이
되면서 그 변수에 검색이 된 디렉토리 이름이 저장이 됩니다. 이건 맨 마지막 줄에서 echo로
확인을 해 보면 출력이 되는 걸로 봐서 제대로 동작을 합니다. 근데 문제는 출력을 마지
막 라인 처럼 할려는 게 아니라 count=3 이고
dir$count이런 식으로 적어 주었을 때 dir3에 저장된 값을 출력을 하고
싶은데 방법을 모르겠네요. 아시는 분 답변 좀 부탁합니다.
echo $dir$count이렇게 하게 되면 정의 되지 않은 변수 dir에서 값을 가져고오고 다시 $count를 3
으로 대체해서 출력을 하기 땜시 원하는 결과인 dir3의 값을 출력 할 수가 없네요.--이 곳에
서명을 적어주십시오. 킬리만자로의 표범