OSX でインターネットに接続しているかどうかを判断するための小さなスクリプトを作成しています。ただの練習のほうが多いと思います。
ターミナルで「ifconfig | grep -cs 'status: active'」は、アクティブな接続が少なくとも 1 つある場合、1 を返します。
私が持っているスクリプトはこれです
#!/bin/bash
detect(){
ONLINE=ifconfig | grep -cs 'status: active'
}
if [[ detect = 1 ]]
then
echo "Online"
else
echo "Offline"
fi
ただし、変数 ONLINE は常に 0 を返します。私が理解していることから、これはスクリプト内でパイプを使用することに関係しています。コマンドの実行時にサブパイプが使用され、サブパイプが閉じると ONLINE が 0 でスタックします。
問題が発生していると思いますが、これを回避する方法がわかりません。whileループでこの問題を抱えているスクリプトの回避策をたくさん見ましたが、ifconfigからの出力をgrepに渡す必要がある場所は何もありませんでした。