
Entonces, por alguna razón, siempre devuelve ssh u 'ok' independientemente de cómo modifique la declaración de prueba y no tengo idea de qué hacer. Dejé el código a continuación.
echo 'Wanna connect to the raspberry pi? (y/n)'
read $sssh
if [[ $sssh == "y" ]]
then
ssh [email protected]
else
echo 'ok'
fi
Respuesta1
La read
utilidad espera el nombre de una variable como argumento. Con read $sssh
, le das el valor de la sssh
variable en lugar del nombre de una variable.
Supongo que querrías leer la sssh
variable, en cuyo caso deberías haber usado read sssh
.
Su script modificado (que incorpora un bucle de lectura que se itera hasta que el usuario proporciona una entrada válida):
#!/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
o más largo,
#!/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