2014-10-02 1 views
0

У меня есть команда, которая должна открыть программу после перезагрузки, если конкретный IP доступен. Я использую Debian, так что sh связан с dash. Код, который я запускаю после запуска системы:Если IP pingable, сделайте что-нибудь (конвертировать команду bash в тире)

sh -c "sleep 10 && if ping -c 1 stackoverflow.com &> /dev/null; then gedit; fi" 

Но с этим кодом gedit будет открыт в каждом случае.

Если я попробовать в консоли Баш

sleep 10 && if ping -c 1 stackoverflow.com &> /dev/null; then gedit; fi 

то он работает правильно. Итак, как можно правильно преобразовать команду bash в тире?

ответ

0

sh не имеет &>. Вам необходимо либо использовать bash -c ..., либо перенаправить один дескриптор за один раз:

sh -c "sleep 1 && if ping -c 1 stackoverflow.com > /dev/null 2>&1; then notify-send hi; fi" 
+1

Большое спасибо! – 198746317467

Смежные вопросы