cronを介したBASHスクリプトの実行(crontab -eを介して呼び出される)に関連する奇妙な問題があります。
スクリプトは次のとおりです。
#!/bin/bash
SIG1="$(iwconfig wlan0 | awk '/Quality=/ { print $2} ' | cut -c 9-10)"
SIG2="$(iwconfig wlan0 | awk '/Quality=/ { print $2} ' | cut -c 12-13)"
echo "$SIG1:$SIG2" >> test.txt
exit
コマンドラインから実行すると、期待される出力が45:70
テキストファイルの最後にエコーされます。ただし、cronを介して(crontab -eを使用して)スクリプトを実行すると、次のエントリが表示されます。
* * * * * bash /home/rupert/test.sh
コロン(:)がテキストファイルにエコーされ、SIG1とSIG2の値が作成されないため、理由がわかりません。cron経由で実行するとスクリプトが台無しになるのはなぜですか?
FWIW、追加処理なしのiwconfigwlan0の出力は次のとおりです。
wlan0 IEEE 802.11abgn ESSID:"plumternet"
Mode:Managed Frequency:2.452 GHz Access Point: 00:18:84:2A:68:AD
Bit Rate=54 Mb/s Tx-Power=15 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=46/70 Signal level=-64 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
WiFiリンク品質の値「46/70」をLCD画面に表示したいので、これをすべて実行しています。使用するプログラムは、テキストファイルを読み取ってこれを実行します。ただし、cronを介して実行すると、値が失われます... ???
「/」がスクリプトで問題を引き起こしている可能性があると考えていたため、cut-c9-10とcut-c12-13を使用していますが、cut-c9-13を使用できれば幸いです。問題が解決するかもしれないと思ったが、解決しなかった。
ヘルプ!!
かっこいい、皆さんのおかげで、私はそれがPATHの問題であることに気づき、iwconfig(/ sbin / iwconfig)へのフルパスを与えるだけで修正されました。これがLCD画面の写真で、正しい情報がすべて表示されています。