Подтвердить что ты не робот

Перечислите файлы и покажите их в меню с помощью bash

Я пытаюсь использовать файлы в каталоге как опции в bash script. Пользователь должен иметь возможность выбрать один, а затем передать имя выбранного файла в переменную. Пока я могу получить список файлов, но через несколько часов я не могу понять, как показать их как параметры.

#!/bin/bash
prompt="Please select a file:"
options=( $(find -maxdepth 1 -print0 | xargs -0) )

PS3="$prompt "
select opt in "${options[@]}" "Quit"; do 

    case "$REPLY" in
    for i in "${options[@]}"
    do
    $i' ) echo "You picked $opt which is file $REPLY";;'
    done    
    $(( ${#options[@]}+1 )) ) echo "Goodbye!"; break;;
    *) echo "Invalid option. Try another one.";continue;;

    esac

done

Любая помощь очень ценится. Спасибо!

4b9b3361

Ответ 1

Я не думаю, что case подходит здесь:

#!/bin/bash
prompt="Please select a file:"
options=( $(find -maxdepth 1 -print0 | xargs -0) )

PS3="$prompt "
select opt in "${options[@]}" "Quit" ; do 
    if (( REPLY == 1 + ${#options[@]} )) ; then
        exit

    elif (( REPLY > 0 && REPLY <= ${#options[@]} )) ; then
        echo  "You picked $opt which is file $REPLY"
        break

    else
        echo "Invalid option. Try another one."
    fi
done    

ls -ld $opt

Ответ 2

Не пропустите перкол, fzy, smenu и друзей. Они с радостью возьмут из stdin, представит удобное меню выбора с интерактивным фильтром, затем снова выберут выбранные строки.