dialog --menu output integer instead string no bash

0

Eu criei um menu dinâmico no bash que obtém seus itens de uma matriz, mas quando o usuário seleciona um item específico, o menu exibe o código de retorno (0 ou 1)

repositorios=() ; i=0
while read -r line; do
    let i=$i+1
repositorios+=($i "$line")
done < <( find ~ -type d -name .git )

gerenciar_repositorios=$(dialog --stdout --extra-button --help-button \
--ok-label "Acessar repositório" \
--extra-label 'Criar repositório' \
--cancel-label 'Remover repositório' \
--help-label 'Cancelar' \
--backtitle "Bem vindo ao Git Bash 'whoami'!" \
--title ' Gerenciar repositórios ' \
--menu 'Gerenciar repositórios' 0 0 0 \
${repositorios[@]}) ; echo $gerenciar_repositorios

The ; echo $gerenciar_repositorios is for testing purposes only!

    
por HenriqueHBR 20.03.2018 / 22:15

1 resposta

2

Em sua tarefa

repositorios+=($i "$line")

o inteiro torna-se o primeiro valor em cada linha. Essa é a tag mencionada na descrição manual de --menu , que é impressa na saída. Se você quiser usar a segunda parte, você poderia fazer

repositorios+=("$line" "$line")

e use a opção --no-tags para exibir uma única coluna. A opção no-items daria um resultado semelhante neste caso.

    
por 20.03.2018 / 23:48