if else Bash-Anweisungssyntax

if else Bash-Anweisungssyntax

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 readDienstprogramm erwartet als Argument den Namen einer Variablen. Mit read $ssshgeben Sie ihm den Wert der ssshVariablen 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

verwandte Informationen