저는 웹에서 많은 노트를 수집하고 이를 관리하기 위해 bash 스크립트를 작성했습니다.
select
메뉴 제작 에 의존하는 스크립트가 있습니다 .
질문: 중첩된 메뉴 컨텍스트에서 스크립트의 이전 메뉴로 되돌릴 수 있습니까? 이것이 불가능할 수도 있다는 강한 느낌이 들지만, 방법이 있기를 바라는 마음으로 이 글을 올립니다.
무슨 뜻인지 설명하자면, 사용자가 메뉴-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