синтаксис оператора bash if else

синтаксис оператора bash if else

Так что по какой-то причине он всегда возвращает либо ssh, либо 'ok' независимо от того, как я изменяю тестовый оператор, и понятия не имею, что делать. Я оставил код ниже.

echo 'Wanna connect to the raspberry pi? (y/n)'
read $sssh

if [[ $sssh == "y" ]]
then 
        ssh [email protected]
else 
        echo 'ok'
fi

решение1

Утилита readожидает имя переменной в качестве своего аргумента. С помощью read $ssshвы даете ей значение переменной, ssshа не имя переменной.

Я предполагаю, что вы хотели бы прочитать значение ssshпеременной, в этом случае вам следовало бы использовать read sssh.

Ваш измененный скрипт (включающий цикл чтения, который повторяется до тех пор, пока пользователь не введет допустимые данные):

#!/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

или, длиннее,

#!/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

Связанный контент