2017-06-05 6 views
0

私は、WiFiをオンまたはオフに切り替えるスクリプトを書こうとしています。MacOSでWiFiを切り替えるスクリプト

"if"ステートメントに問題があります。私はWifiがオンであるかオフであるかを教えてくれる簡単なスクリプトから始めます。それは書かれたようには機能しません。 WiFiステータスが何であっても「WiFiがオフ」になる

#!/bin/sh 
STATUS=`networksetup -getairportpower en0` 
if $STATUS == On 
then 
    echo "Wifi is on" 
else 
    echo "Wifi is off" 
fi 

答えて

0

[expr]を使用して論理式を評価します。したがって、条件は次のようになります:

if [ $STATUS == On ] 

もっと精巧な式を評価する必要がある場合は、[[expr]]を使用します。両方の意味はthis section of bash manualで説明されています。

0

networksetupのテキスト値は「オン」ではなく、(私のマシン上では)「Wi-Fi Power (en0): On」です。したがって、我々はglobパターンで行うことができる "On"の前のテキストを考慮する必要があります。アスタリスク(*)は "0以上の任意の文字"を意味します。

#!/bin/bash 
status=$(networksetup -getairportpower en0) 
if [[ $status == *On ]] 
then 
    echo "Wifi is on" 
else 
    echo "Wifi is off" 
fi 

その他の注意事項:私はむしろshより、#!/bin/bashを使用しているために、私たちは私たちのif文のダブル[[コマンドを必要としています。 shはPOSIXシェルで、おそらくはbashのサブセットです。 bashが必要な場合は#!行に指定する必要があります(shではなく)。

バックティック( ``)ではなく$()の表記を使用しました。バックティックは非推奨であり、読みにくいとみなされます。

周囲のスペースは[[]]であることに注意してください。

私はSTATUSをstatusに置き換えました。これは、大文字の変数名がシェルで使用されているため、大文字のリスクを名前の衝突として使用するためです。小文字または大文字小文字の変数名を使用することをお勧めします。

+0

優れています。それは私のために働いて、私はあなたの答えから多くを学んだ。 –

関連する問題