if else bash 文の構文

if else bash 文の構文

そのため、何らかの理由で、テスト ステートメントをどのように変更しても、常に 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

関連情報