首页 > 解决方案 > 如何创建一个菜单来执行一些带有选择循环的 bash 脚本?

问题描述

我有一个非常重要的项目,需要一个菜单​​来执行一些 bash 脚本。发生的情况是此代码工作正常,但在执行选项之一后不会返回菜单。你能帮我吗?

#!/bin/bash
PS3='Escolha uma opção: '
options=("Cria condutor" "Cria passageiros" "Lista negra" "Atualiza condutores" "Stats" "Sair")
clear
select opt in "${options[@]}";
do
case $opt in
    "Cria condutor")
    echo "Insira o número de estudante: "
    read nestudante
        echo "Insira o primeiro e Último nome: "
    read nome
            echo "Insira a sua turma: "
    read turma
            echo "Insira o número de telemóvel: "
    read ntelemovel
            echo "Insira o seu e-mal: "
    read email
            echo "Insira o tipo de viatura (carro ou mota): "
    read tipo
            echo "Insira a marca do veículo: "
    read marca
            echo "Insira a matrícula: "
    read matricula
    exec ./cria_condutor.sh $nestudante $nome $turma $ntelemovel $email $tipo $marca $matricula
    break;;

    "Cria passageiros")
        exec ./cria_passageiros.sh
        ;;

    "Lista negra")
        exec ./lista_negra.sh
        ;;

    "Atualiza condutores")
        exec ./atualiza_condutores.sh
        ;;

    "Stats")
        exec ./stats.sh
        ;;

    "Sair")
        break
        ;;
    *) echo "invalid option $REPLY";;
  esac
done

标签: bash

解决方案


您使用您调用exec的内容替换当前流程。只需剥离exec创建子进程,等待其终止,然后继续执行您的脚本:

read matricula
./cria_condutor.sh $nestudante $nome $turma $ntelemovel $email $tipo $marca $matricula
break;;

推荐阅读