Bashスクリプト選択メニュー

Bashスクリプト選択メニュー

私はWeb上で多くのノートを収集し、それを管理するためにbashスクリプトを作成しました。

selectメニュー制作に依存するスクリプトがあります。

Q:ネストされたメニューコンテキストからスクリプトの前のメニューに戻すことはできますか?これは不可能かもしれないという強い感じがしますが、方法があることを望む気持ちでこの文を載せます。

何を意味するかを説明するには、ユーザーがメニュー-1から項目を選択し、それに応じて後続のメニュー-2に表示される内容が決定されるとします。ユーザーがメニュー2で「完了」を選択した場合、ユーザーをメニュー1に戻すための繰り返しデバイスがありますか?

以下のスクリプトには3つの選択肢が含まれています。選択3から選択2に戻すことができるようにしたいです。

curd=($(ls)); # array

select dirup in ${curd[@]} done 

do


cd $dirup;
    ar=($(ls | awk -F"." '{ print $1 }' | awk -F"-" '{ for(i=2; i<=NF; i++) print $i }' | sort | uniq)); 


select choice in ${ar[@]} done # select list
    do 
        echo "you selected: $choice"
        [[ $choice == "done" ]] && exit 
        ar=($( find . -type f -maxdepth 1 -name "*$choice*" ));
        ((cnt=${#ar[@]}+1))
        select ntit in ${ar[@]} done
            do 
                echo "choice is:[ $REPLY ]"
                for i in $REPLY; # $REPLAY contains numbers
                    do
                      if [ $i -lt $cnt ]
                        then 
                            ((var=$i-1)); 
                            open ${ar[$var]}; 
                        else 
                            exit
                      fi
                    done

            done

      done

done

答え1

break代わりに使用してくださいexit。ただし、前のメニューに戻るとメニューが再印刷されませんのでご注意ください。

例:

select x in nothing inner quit ; do
    [[ $x == quit ]] && break
    if [[ $x == inner ]] ; then
        select y in NOTHING BACK ; do
            [[ $y == BACK ]] && break
        done
    fi
done

関連情報