bash脚本选择菜单

bash脚本选择菜单

我从网上收集了很多笔记,并编写了 bash 脚本来管理它们。

我有一些脚本依赖于select制作菜单。

问题:在嵌套菜单上下文中,是否可以恢复到脚本中的先前菜单?我有一种强烈的感觉,这可能是不可能的,但我发布这篇文章是希望有办法。

解释一下我的意思:假设用户对 menu-1 做出选择,然后它决定随后的 menu-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

相关内容