Sintaxe:
Selecione V em data_list
fazer
Declaração1
Declaração2
Declaração3
feito
Aqui, o item de menu será criado a partir do data_list que pode ser uma matriz ou outra fonte de dados. Cada item de menu recupera do data_list e armazena em uma variável para criar o menu. O comando 'select' pode ser usado com o comando 'case' também para criar o menu. Diferentes tipos de tarefas de criação de menu são mostrados aqui usando exemplos muito simples.
Exemplo 1: Criando um menu simples
Crie um arquivo bash chamado Select1.sh com o seguinte script Bash. Aqui, 'Selecione' O comando recuperará cada dados da lista e imprimirá os dados como um menu. O script a seguir contém os nomes de marcas dos telefones celulares e, depois de executar o script, ele criará um menu de marcas móveis e pedirá ao usuário que escolha qualquer marca. Ele imprimirá o nome da marca selecionada. O usuário tem que pressionar Ctrl+c Para terminar a partir do script.
#!/BIN/BASH
# Defina a lista de menus aqui
Selecione Brand em Samsung Sony iPhone Symphony Walton
fazer
eco "você escolheu $ marca"
feito
Saída:
Execute o script.
$ Bash Select1.sh
A saída a seguir aparecerá após a execução do script e selecionando o número do item de menu 1 e 4.
Exemplo 2: Selecione comando com uma instrução de caso
Como você pode criar um menu Bash com a instrução CASE é mostrado neste exemplo. Crie um arquivo bash chamado SELECT2.sh com o seguinte script Bash. Depois de executar o script, o usuário selecionará qualquer item de menu e a instrução CASE corresponderá ao valor selecionado com o valor do caso. Aqui, vários valores de caso são usados para combinar com o item de menu selecionado. Se nenhum valor do caso corresponder ao item de menu selecionado, “entrada inválida” imprimirá.
#!/BIN/BASH
eco "de qual sistema operacional você gosta?"
# Nomes de sistemas operacionais são usados aqui como fonte de dados
Selecione OS no Ubuntu Linuxmint Windows8 Windows7 Windowsxp
fazer
caso $ os em
# Dois valores de caso são declarados aqui para corresponder
"Ubuntu" | "Linuxmint")
eco "Eu também uso $ OS."
;;
# Três valores de caso são declarados aqui para correspondência
"Windows8" | "Windows7" | "Windowsxp")
eco "Por que você não tenta Linux?"
;;
# Combinando com dados inválidos
*)
eco "entrada inválida."
quebrar
;;
ESAC
feito
Saída:
Execute o script.
$ Bash Select2.sh
A saída diferente aparecerá para seleção diferente. Aqui, 1 é selecionado na primeira vez que é Ubuntu. Combinou com o valor do primeiro caso, imprima a mensagem “Eu também uso o Ubuntu”. 4 é selecionado na próxima vez e o item de menu é Windows7 Mas não há valor de caso com este nome. Então, desta vez ele imprimiu "Entrada inválida" e terminar do script.
Exemplo-3: Criando menu Bash aninhado
Quando qualquer menu é criado no menu do outro, ele é chamado de menu aninhado. O menu aninhado pode ser criado na base usando duas ou mais declarações de caso e caso. Crie um arquivo bash chamado SELECT3.sh com o seguinte script Bash. Aqui, duas declarações de seleção e caso são usadas para implementar o menu aninhado. O menu pai contém 4 itens e submenu contém 3 itens aqui.
#!/BIN/BASH
enquanto é verdade
fazer
# Itens de menu pai declarados aqui
Selecione Item no monitor de impressora de mouse HDD
fazer
# Declaração de caso para comparar os primeiros itens do menu
Caso $ item em
Rato)
eco "que tipo de monitor você gosta?"
;;
Impressora)
# Itens submenu aqui declarados aqui
Selecione Sub_item em Samsung HP Dell
fazer
# Declaração de caso para itens de menu solar
caso $ sub_item em
Samsung)
eco "O preço da impressora Samsung custa US $ 100"
quebrar
;;
HP)
eco "A impressora de preços da impressora HP 880 é de US $ 450"
# retorne ao menu dos pais
quebrar
;;
Dell)
eco "nenhuma impressora Dell está disponível agora"
# Retorne ao menu pai
Break 2
;;
ESAC
feito
quebrar
;;
Monitor)
eco "Compre nosso novo monitor Samsung a baixo custo"
Break # Retornar o menu atual (principal)
;;
HDD)
eco "HDD de boa qualidade está disponível no estoque"
# Retorne do script
Break 2
ESAC
feito
feito
Saída:
Execute o script.
$ Bash Select3.sh
Depois de executar o script, o menu pai com 4 itens exibidos. Aqui, apenas o segundo item do menu do menu pai contém submenu. Depois de selecionar 2, o submenu apareceu e quando o usuário selecionou 3, ele exibiu a mensagem correspondente do Menu Item 3 e devolve ao menu pai.
Exemplo-4: Crie um menu Bash com uma matriz
Uma variável de matriz pode armazenar vários dados. Portanto, você pode usar uma matriz como uma lista de dados para criar um menu base. Como você pode usar uma matriz com uma instrução SELECT para criar um menu é mostrado neste exemplo. Crie um arquivo bash chamado SELECT4.sh com o seguinte script Bash. A sub -rotina Bash é usada neste script para criar um menu a partir da matriz. Uma matriz com três elementos é usada e menus_from_array () é chamado para criar o menu. O script verificará o número do item do menu selecionado está entre 1-3 ou não. Se o número não estiver dentro desse intervalo, ele instruirá o usuário a selecionar dentro desse intervalo, ele imprimirá o item de menu Selecionar com outro texto.
#!/BIN/BASH
menus_from_array ()
Selecionar item; fazer
# Verifique o número do item do menu selecionado
se [1 -le "$ Responder"] && ["$ Responder" -le $#];
então
eco "O sistema operacional selecionado é $ item"
quebrar;
outro
eco "Seleção errada: selecione qualquer número de 1-$#"
fi
feito
# Declare a matriz
Linux = ('Ubuntu' 'Linux Mint' 'Centos')
# Ligue para a sub -rotina para criar o menu
MENU_FROM_ARRAY "$ Linux [@]"
Saída:
Execute o script.
$ Bash Select4.sh
Aqui, 2 é selecionado primeiro que está dentro do intervalo e impresso o texto. 6 é selecionado na segunda vez que está fora de alcance e sugere que o usuário selecione um número dentro do intervalo.
Para entender este código, devemos aprender alguns truques 😉
Tarefa de criação de menu Bash usando uma instrução SELECT é explicada neste tutorial o mais simples possível. Existem muitas maneiras simples e sofisticadas de usar o Select in Bash ao criar menus e esperamos que esses exemplos lhe dêem um ponto de partida para criar suas próprias combinações.