
Aus irgendeinem Grund gibt es immer entweder ssh oder „ok“ zurück, unabhängig davon, wie ich die Testanweisung ändere und keine Ahnung habe, was ich tun soll. Ich habe den Code unten gelassen.
echo 'Wanna connect to the raspberry pi? (y/n)'
read $sssh
if [[ $sssh == "y" ]]
then
ssh [email protected]
else
echo 'ok'
fi
Antwort1
Das read
Dienstprogramm erwartet als Argument den Namen einer Variablen. Mit read $sssh
geben Sie ihm den Wert der sssh
Variablen und nicht den Namen einer Variablen.
Ich gehe davon aus, dass Sie die Variable einlesen möchten sssh
. In diesem Fall hätten Sie verwenden sollen read sssh
.
Ihr geändertes Skript (mit einer Lese-Schleife, die so lange wiederholt wird, bis der Benutzer eine gültige Eingabe macht):
#!/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
oder länger,
#!/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