如何从案例陈述中的案例循环回到原始选择菜单?

如何从案例陈述中的案例循环回到原始选择菜单?

a)我有以下名为 q.txt 的 bash 脚本。我想运行带有 case 语句的 select 语句。如何在运行 case后重新显示菜单选项。在 case. /home/chh1/q.txt之后不会运行。echo "a"a)

我很清楚为什么这不起作用,但是在执行案例后有没有办法循环回到原始选择菜单?

#!/bin/bash

select x in a b c d

do

case $x in
        a) echo "a"
           . /home/chh1/q.txt;;
        b) echo "b";;
        c) echo "c";;
        d) echo "You are now exiting the program"
           break;;
        *) echo "Invalid entry. Please try an option on display";;

esac

done

答案1

您可以添加由变量驱动的外循环。

#!/bin/bash
anew=yes
while [ "$anew" = yes ]; do
   anew=no
   select x in a b c d
   do
      case $x in
         a) echo "a"
            anew=yes
            break;;
         b) echo "b";;
         c) echo "c";;
         d) echo "You are now exiting the program"
            break;;
         *) echo "Invalid entry. Please try an option on display";;
      esac
   done
done

初始代码anew=yes使while循环至少执行一次。在循环内部,将变量设置为,然后执行no稍微修改过的循环版本。思路是:当脚本退出循环时,变量应该是或,循环主体应该分别重复或不重复。案例只是将变量设置为并中断循环。selectselectyesnowhileayesselect

相关内容