whiptail e chamando scripts externos

3

Eu gostaria de usar o whiptail para criar uma caixa de ferramentas que executa scripts externos quando um item de menu é escolhido.

Eu tenho o seguinte código

#!/bin/bash

OPTION=$(whiptail --title "IT ToolBox v0.1" --menu "Choose your option" 15 60 4 \
"1" "Get users dropped from Active Directory" \
"2" "Work in progress" \
"3" "Work in progress" \
"4" "Work in progress"  3>&1 1>&2 2>&3)

exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "Your chosen option:" $OPTION
else
    echo "You chose Cancel."
fi

case $RETVAL in
    1) echo "Get users dropped from Active Directory"
    2) echo "Invalid option. Quitting";;
    3) echo "Invalid option. Quitting";;
    4) echo "Invalid option. Quitting";;
    *) echo "Invalid option. Quitting";;
esac

Como eu digo ao script para executar o arquivo gudfad.sh quando escolhido? Meu entendimento é que o comando deve ser adicionado na área do caso - por exemplo:

case $RETVAL in
    1) echo "Get users dropped from Active Directory"
       gudfad.sh;;
    2) echo "Invalid option. Quitting";;
    3) echo "Invalid option. Quitting";;
    4) echo "Invalid option. Quitting";;
    *) echo "Invalid option. Quitting";;
esac

No entanto, quando eu executo isso e escolho a opção 1, recebo a mensagem:

Your chosen option: 1
Invalid option. Quitting
    
por Aaran 16.01.2017 / 12:56

1 resposta

2

A escolha do usuário está em OPTION , não em RETVAL .

Alterar:

case $RETVAL in

Para:

case "$OPTION" in

É bom adicionar set -u no topo dos seus scripts bash para que você seja avisado quando usar variáveis indefinidas.

Também é bom sempre citar suas variáveis: "$var" , não $var . Existem exceções, mas são raras.

    
por 16.01.2017 / 13:06