У меня странная проблема, связанная с запуском скрипта BASH через cron (вызывается через 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, вот вывод iwconfig wlan0 без дополнительной обработки:
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
Я делаю все это, потому что я хочу отобразить значение качества Wi-Fi Link "46/70" на ЖК-экране, и программа, которую я использую, делает это, читая текстовый файл. Однако при запуске через cron значения теряются ... ???
Я использую cut -c 9-10 и cut -c 12-13, потому что я думал, что "/" может вызвать проблему в скрипте, я был бы рад просто использовать cut -c 9-13 , но я думал, что это может решить проблему, но это не так.
Помощь !!
Круто, спасибо вам, ребята, я понял, что это проблема PATH, просто указав полный путь к iwconfig (/ sbin / iwconfig), исправил ее. Вот изображение ЖК-экрана, показывающего всю правильную информацию:
http://img835.imageshack.us/img835/4175/20100825122413.jpg