Bash 스크립트 선택 메뉴

Bash 스크립트 선택 메뉴

저는 웹에서 많은 노트를 수집하고 이를 관리하기 위해 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

관련 정보