用于在MacOS中切换WiFi的脚本

时间:2017-06-05 15:48:21

标签: bash macos

我正在尝试编写一个可以打开或关闭WiFi的脚本。

我在使用“if”语句时遇到问题。我从一个简单的脚本开始,它应该告诉你Wifi是打开还是关闭。它不像书面那样工作。无论WiFi状态如何,我都会“无线关闭”

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

2 个答案:

答案 0 :(得分:0)

您应使用[expr]来评估逻辑表达式。所以,条件就像:

if [ $STATUS == On ]

如果您需要评估更详细的表达式,可以使用[[expr]]。两者的含义在this section of bash manual中解释。

答案 1 :(得分:0)

来自networksetup的文字值不仅仅是“开启”(在我的机器上)“Wi-Fi Power (en0): On”。因此,我们需要考虑“On”之前的文本,我们可以使用 glob模式,星号(*)表示“零或更多任何字符”。为此,我们需要在[[语句中使用双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替换为status。这是因为shell使用了许多大写变量名,因此使用大写会冒名称冲突。最好使用较低或混合大小写的变量名称。