if else sintaxe da instrução bash

if else sintaxe da instrução bash

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 readutilitário espera o nome de uma variável como argumento. Com read $sssh, você fornece o valor da ssshvariável em vez do nome de uma variável.

Presumo que você queira ler a ssshvariá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

informação relacionada