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