Usando o diálogo no bash como modifico o comportamento com base em vários itens sendo selecionados

2

Estou criando um menu para anexar ou sobrescrever chaves ssh para vários usuários usando dialog --checklist. O menu é algo parecido com isto

    0) append
    1) user1
    2) root

O que eu gostaria de acontecer é se a opção zero for selecionada e a opção 1 ou 2 ou ambas forem selecionadas, em vez de gravar as chaves ssh quando ela for gerada novamente.

Sou novo no diálogo e não consigo encontrar a lógica necessária para que isso aconteça.

Meu primeiro pensamento foi usar a opção --separate-output e de alguma forma usar grep nos resultados, mas tem que haver uma solução mais elegante. Qualquer ajuda ou conselho é apreciado.

    
por ss0 31.10.2011 / 08:06

1 resposta

1

Executar diálogo como este:

dialog --checklist text 50 20 10 0 append 0 1 user1 0 2 root 0 2> checklist.txt

O 2> canaliza o stderr para o seu próprio arquivo - que é onde a saída do --checklist termina.

Em seguida, leia os termos da checklist.txt assim:

APPEND=0
for a in $(cat checklist.txt); do
    if [ "$a" = "\"0\"" ]; then
        APPEND=1
        continue
    fi

    if [ "$APPEND" -eq 0 ]; then
        # Copy ssh key, without appending
    else
        # Append ssh key
    fi
done
    
por 31.10.2011 / 08:17