Синтаксис массива
Предполагается, что каталоги хранятся в массиве:
dirs=(dir1 dir2 dir3)
Вы можете получить длину массива следующим образом:
echo "There are ${#dirs[@]} dirs in the current path"
Выможет проходить через него следующим образом:
let i=1
for dir in "${dirs[@]}"; do
echo "$((i++)) $dir"
done
И, предполагая, что вы получили ответ пользователя, вы можете проиндексировать его следующим образом.Помните, что массивы основаны на 0, поэтому третья запись - это индекс 2.
answer=2
echo "you selected ${dirs[$answer]}!"
Find
Как вы в любом случае получаете имена файлов в массив?Это немного сложно.Если у вас есть find
, это может быть лучшим способом:
readarray -t dirs < <(find . -maxdepth 1 -type d -printf '%P\n')
-maxdepth 1
останавливает поиск при просмотре подкаталогов, -type d
сообщает ему найти каталоги и пропускает файлы, а -printf '%P\n'
сообщаетэто, чтобы напечатать имена каталогов без начального ./
, это обычно любит печатать.