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")
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?
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.
Tags bash