Команда At на самом деле не работает

Этот вопрос можно переформулировать в более знакомой обстановке. По аналогии:

«У меня есть программа Ruby, которую я хочу запустить, но на моей платформе есть только интерпретатор Python. Могу ли я использовать интерпретатор Python для запуска моей программы Ruby, или мне нужно переписать свою программу на Python? "

Архитектура набора команд (" цель ") - это язык -" машинный язык "- и разные процессоры реализуют разные языки. Таким образом, запрос к процессору ARM для запуска двоичного файла Intel очень похож на попытку запустить программу Ruby с использованием интерпретатора Python.

3
08.05.2017, 13:04
1 ответ

Ваша проблема может заключаться в следующем (от man at):

ОПИСАНИЕ

at и batch чтение команд из стандартного ввода или указанного файла, которые для выполнения позже, используя /bin/sh .

Кроме того, если вы запустите, например, at -f noti.sh -t 2... , должно появиться следующее предупреждение:

warning: commands will be executed using /bin/sh
job 4 at Mon May  8 13:51:00 2017

/bin/sh в Debian символическая ссылка на /bin/dash. Я предполагаю, что вы тестировали свой скрипт с bash, который имеет некоторые возможности, не определенные POSIX, т.е. они не будут работать в dash или, вообще, с /бин/ш.

В вашем конкретном случае проблемы [[ ]] и OSTYPE, которые не поддерживаются тире. Попробуйте запустить

$ sh noti.sh 

Он вернет следующую ошибку

noti.sh: 2: noti.sh: [[: not found
noti.sh: 4: noti.sh: [[: not found

, тогда как запуск скрипта с bash делает то, что вы хотите.

Чтобы запустить сценарий так, как вы задумали, вам может потребоваться переписать его, чтобы он был совместим с /bin/sh (тире в вашем случае), см. www. shellcheck.net за помощь в этом.

1
27.01.2020, 21:30

Теги

Похожие вопросы