2017-06-05 51 views
0

我正在嘗試編寫一個腳本,用於開啓或關閉WiFi。在MacOS中切換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的文本值不僅僅是「On」(在我的機器上)「Wi-Fi Power (en0): On」。因此,我們需要考慮「On」之前的文本,我們可以使用全局模式做的事情,星號(*)表示「零個或多個任何字符」。爲此,我們在我們的if聲明需要雙[[命令:

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

其他說明:我以前#!/bin/bash,而不是shsh是一個POSIX shell,它(可以說)是bash的一個子集。如果你想bash那麼你應該在#!行上指定它,而不是sh

我用$()符號而非背蜱(``)。反標記被認爲已被棄用且難以閱讀。

注意周圍和內部[[]]的空間,它們是必需的。

我已經取代狀態與status。這是因爲shell使用了許多大寫的變量名,所以使用大寫會冒名稱衝突。最好使用較低或混合大小寫的變量名稱。

+0

優秀。這對我有效,我從你的答案中學到了很多東西。 –