- pingを実行し続けて、応答が返ってくるまで待機するという動作をさせたい
- ネットワークアダプタが通信状態になるのを待ったりとか
- Macのbash(GNU bash, 4.3.42)だと以下のコードが期待通りの動きをする
- Edisonのログインシェルで、スクリプトをワンライナーとして実行すると期待通りの動作をする
- スクリプトをファイルに書いて、
sh ping.sh
とすると、[ "$?" -eq 0 ]
の結果がなぜか必ずtrueになってしまい期待通りの動作をしない
ping.sh
#!/bin/sh
while :
do
ping -c 1 8.8.8.8
if [ "$?" -eq 0 ]
then
echo "network connected"
break;
else
sleep 1
fi
done
- 以下のように終了ステータスをいちど変数に書き出したら期待通りの動作になった
ping.sh
#!/bin/sh
while :
do
ping -c 1 8.8.8.8
ping_status="$?"
if [ $ping_status -eq 0 ]
then
echo "network connected"
break;
else
sleep 1
fi
done
なんなんだろうこれ。