Executar teste lido no bash

0

Eu estou tentando executar essa declaração no bash e continuar recebendo erros

test [[ "$(read -p 'Install gtodo? ' R ; echo $R)" == "Y" ]] && (sudo apt-get install gtodo) || (echo "gtodo not installed")

Por favor, qual é a sintaxe correta?

    
por JohnTheBeloved 17.10.2015 / 10:59

2 respostas

5

Eu acredito que o problema é que você está usando tanto test quanto [[

test "$(read -p 'Install gtodo? ' R ; echo $R)" = "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")
    
por 17.10.2015 / 11:11
3

Você escreve test <expresion> ou [ <expresion> ] . No seu caso, eu até substituiria o read antes de test , para manter a expressão curta:

read -p 'Install gtodo? ' R; test "$R"  == "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")

Mas aceitará apenas "Y" como resposta possível. Se você alterá-lo para:

read -p 'Install gtodo? ' R; [ "$R"  == "Y" ] || [ "$R" == "y" ] && (sudo apt-get install gtodo) || (echo "gtodo not installed")

Ele aceita tanto "Y" quanto "y" como resposta possível.

    
por 17.10.2015 / 11:15

Tags