Номер задания печатается командой at
, но, к сожалению, это напечатано на standard error, а не на стандартный вывод. Чтобы захватить его, вам нужно перенаправить его на стандартный вывод.
Следующий фрагмент отображает вывод at
в переменную. Я запускаю at
в локали C, потому что он может создавать разные выходные данные на других языках. Если команда не удалась, я распечатаю сообщение об ошибке, которое я захватил. В противном случае я проанализирую вывод, чтобы найти номер задания.
at_output=$(printf %s "$command" | LANGUAGE= LC_ALL=C at "$time" 2>&1)
at_status=$?
if [ "$at_status" -ne 0 ]; then
echo "at $time failed with status $at_status" >&2
echo "$at_output"
exit $at_status
fi
newline='
'
case "$at_output" in
"job "*) at_job=${at_output#job };;
*"${newline}job "*) at_job=${at_output#*"${newline}job "};;
*) echo >&2 "$at_output"; echo >&2 "Unable to determine at job number!";;
esac
at_job=${at_job%% *}
Пожалуйста, добавьте код, который вы уже пробовали. Это поможет вам намного легче. – ByteNudger
Возможно, вы хотите посмотреть на 'atq' после того, как вы отправили свою работу? – twalberg
Также стоит упомянуть операционную систему, в которой вы работаете. 'at' могут быть реализованы по-разному на разных платформах. – ghoti