Guia / ajuda usando Dialog com bash scripting

1

Embora eu saiba como criar menus, nenhum guia que eu encontrei ensina como vinculá-los aos comandos

Eu esperava ter algo como:

dialog--clear --title "n00b's spellbook" \
        --menu "Choose thine spell:" 20 51 4 \
        1 "Name of program"  "blah" \
        2 "Name of other program" "blah" \

então, de alguma forma, 1 é executado em ./program1 e 2 corre ./program2

    
por Peace Blaster 17.04.2013 / 19:05

2 respostas

1

Desculpe. Perdeu o ponto. Não peguei foi o pacote de diálogo - @jasonwryan correção da marcação tornou mais claro. - Então, isso é uma reescrita completa.

Como observado pelas man pages; Eu recomendo que você faça o download da fonte e procure a pasta de exemplos.

Se você está em apt-get world, simplesmente diga:

apt-get source dialog
cd dialog*/samples

Um exemplo básico da amostra sim / não (com algumas modificações):

: ${DIALOG=dialog}

: ${DIALOG_YES=0}
: ${DIALOG_NO=1}
: ${DIALOG_ESC=255}


DIALOG_ERROR=254
export DIALOG_ERROR

$DIALOG --title "YES/NO BOX" --clear "$@" \
        --yesno "A simple Yes/No dialog." 15 61

retval=$?

case $retval in
  $DIALOG_YES)
    echo "YES";;
  $DIALOG_NO)
    echo "NO";;
  $DIALOG_ERROR)
    echo "ERROR!";;
  $DIALOG_ESC)
    echo "ESC pressed.";;
esac
    
por 17.04.2013 / 19:32
0

A página de manual da caixa de diálogo informa onde começar:

--menu text height width menu-height [ tag item ] ...

On exit the tag of the chosen menu entry will be printed on dialog's output.

O exemplo dado

dialog--clear --title "n00b's spellbook" \
    --menu "Choose thine spell:" 20 51 4 \
        1 "Name of program"  "blah" \
        2 "Name of other program" "blah" \

parece estar incorretamente formatado, pois há três valores por linha. Reduzindo isso para algo mais plausível:

dialog --clear --title "n00b's spellbook" \
    --menu "Choose thine spell:" 20 51 4 \
        1 "Name of program" \
        2 "Name of other program"

os valores da tag são 1 e 2 . Por padrão, a saída da caixa de diálogo é o erro padrão, que pode ser capturado redirecionando isso, por exemplo,

tempfile=$(mktemp)
dialog --clear --title "n00b's spellbook" \
    --menu "Choose thine spell:" 20 51 4 \
        1 "Name of program" \
        2 "Name of other program" 2> $tempfile

e usado em uma declaração de caso:

case 'cat $tempfile' in
(1) ./program1;;
(2) ./program2;;
esac

Existem vários scripts de exemplo nas fontes para diálogo. Os scripts de amostra executam scripts de utilitários que criam e removem o arquivo temporário, além de permitir o teste de variáveis de ambiente que pode alterar os códigos de saída do diálogo.

Ao estudar os scripts apropriados - para o widget menu neste caso - você pode ter uma melhor familiaridade com diálogo .

    
por 31.10.2015 / 02:31