
Então, por algum motivo, ele sempre retorna ssh ou 'ok', independentemente de como eu modifico a instrução de teste e não tenho ideia do que fazer. Deixei o código abaixo.
echo 'Wanna connect to the raspberry pi? (y/n)'
read $sssh
if [[ $sssh == "y" ]]
then
ssh [email protected]
else
echo 'ok'
fi
Responder1
O read
utilitário espera o nome de uma variável como argumento. Com read $sssh
, você fornece o valor da sssh
variável em vez do nome de uma variável.
Presumo que você queira ler a sssh
variável; nesse caso, você deveria ter usado read sssh
.
Seu script modificado (incorporando um loop de leitura que itera até que uma entrada válida seja fornecida pelo usuário):
#!/bin/bash
while true; do
read -p 'Connect to RPi? (y/n): ' yesno
case $yesno in
y) ssh ...; break ;;
n) echo ok; break ;;
*) echo invalid input >&2
esac
fi
ou mais,
#!/bin/bash
while true; do
read -p 'Connect to RPi? (y/n): ' yesno
if [[ $yesno == 'y' ]]; then
ssh ...
break
elif [[ $yesno == 'n' ]]; then
echo ok
break
fi
echo invalid input >&2
fi