Предложите пользователю выбирать каталог со сценарием удара и читать результат

Я хочу быть считанным 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.

15
задан John Ballinger 10 October 2016 в 20:51
поделиться

2 ответа

Если ваши требования к форматированию не очень строгие, вы, вероятно, можете просто использовать конструкцию bash select .

Следующий код представит меню всех каталогов в текущем каталоге, а затем chdir в выбранный:

printf "Please select folder:\n"
select d in */; do test -n "$d" && break; echo ">>> Invalid Selection"; done
cd "$d" && pwd
28
ответ дан 1 December 2019 в 01:38
поделиться
#!/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'"
4
ответ дан 1 December 2019 в 01:38
поделиться