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
に置き換えました。これは、大文字の変数名がシェルで使用されているため、大文字のリスクを名前の衝突として使用するためです。小文字または大文字小文字の変数名を使用することをお勧めします。
優れています。それは私のために働いて、私はあなたの答えから多くを学んだ。 –