私は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