xkcd #981의 상황을 에뮬레이트하는 빠른 쉘 스크립트를 작성하고 (하드 링크 및 상위 디렉토리에 심볼 링크 만 있음) 재귀 함수를 사용하여 모든 디렉토리를 작성했습니다. 불행하게도이 스크립트는 원하는 결과를 제공하지 않으므로 변수 $ count의 범위에 대한 내 이해가 잘못되었다고 생각합니다.쉘 스크립트 : 함수의 가변 범위
제대로 함수를 재귀를 사용하여 20 개의 폴더를 만들 수 있습니다. 각 폴더에는 3 개의 폴더 (3^20 폴더, 맨 위로 소프트 링크로 끝남)가 포함되어 있습니까?
#!/bin/bash
echo "Generating folders:"
toplevel=$PWD
count=1
GEN_DIRS() {
for i in 1 2 3
do
dirname=$RANDOM
mkdir $dirname
cd $dirname
count=$(expr $count + 1)
if [ $count < 20 ] ; then
GEN_DIRS
else
ln -s $toplevel "./$dirname"
fi
done
}
GEN_DIRS
exit
여섯/일곱 한 나는 그것을 받아 4 개의 CUR 및 최대를 설정하는 라인? 또한, 왜 14-19 세의 약자입니까? 위대한 솔루션, 감사합니다! – CliffordSR
불행히도 지금은 모든 디렉터리를 만들지 않습니다. 1과 20으로 호출하면 4 단계 깊이가 만들어지며 마지막 dir에는 3 대신에 하나의 심볼릭 링크가 생성됩니다./ – CliffordSR
GEN_DIRS 호출에서 4 단계가 하드 코딩되었습니다. 1 대 3의 심볼릭 링크는 요구 사항에 대한 오해였습니다. 두 가지 문제가 모두 수정되었습니다. 'gendirs.sh'라는 스크립트로'bash gendirs.sh'를 실행하면 4 개의 레벨이 생성되고'bash gendirs.sh 8'은 8 개의 레벨을 생성합니다. –