Я хочу быть считанным dir со сценарием удара (на самом деле, я использую zsh).
Я хочу перечислить текущие папки в том же dir и отобразить его пользователю, просящему, чтобы они вводили номер для выбора корректной папки.
Please select a Folder eg, 1,2,3.
1. Folder Name 1 (this should the actual name of the folder in the dir
2. Folder 2
3. Folder 3.
Я хотел бы также смочь преобразовать вход, например, 1. Назад к фактическому имени папки, таким образом, я могу
cd ./$foldername/
Спасибо за Вас справка. С наилучшими пожеланиями, John.
Если ваши требования к форматированию не очень строгие, вы, вероятно, можете просто использовать конструкцию bash select
.
Следующий код представит меню всех каталогов в текущем каталоге, а затем chdir в выбранный:
printf "Please select folder:\n"
select d in */; do test -n "$d" && break; echo ">>> Invalid Selection"; done
cd "$d" && pwd
#!/bin/bash
dirs=(*/)
read -p "$(
f=0
for dirname in "${dirs[@]}" ; do
echo "$((++f)): $dirname"
done
echo -ne 'Please select a directory > '
)" selection
selected_dir="${dirs[$((selection-1))]}"
echo "You selected '$selected_dir'"