Я написал сценарий быстрой оболочки для эмуляции ситуации xkcd #981 (без жестких ссылок, только символических ссылок на родительские директории) и использовал рекурсивную функцию для создания всех каталогов. К сожалению, этот скрипт не дает желаемого результата, поэтому я считаю, что мое понимание области переменной $ count неверно.Сценарий оболочки: переменная область видимости в функциях
Как правильно заставить функцию использовать рекурсию для создания двадцать уровней папок, каждая из которых содержит 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
линии шесть/семь настраивает пес и максимум на один и четыре я беру это? Кроме того, почему у парни около 14-19? Отличное решение, спасибо! – CliffordSR
К сожалению, не создавая все каналы прямо сейчас. Когда вызывается с 1 и 20, он создает 4 уровня в глубину и только одну символическую ссылку в конечном каталоге вместо 3:/ – CliffordSR
4 уровня были жестко закодированы при вызове GEN_DIRS. Символы 1 против 3 означали непонимание этого требования. Оба вопроса теперь исправлены. С помощью скрипта под названием 'gendirs.sh' запуск' bash gendirs.sh' создает 4 уровня, а 'bash gendirs.sh 8' генерирует 8 уровней и т. Д. –