Как настроить -systemd "cron" -как задание для работы с какой-либо учетной записью пользователя, когда оно неактивно

Часть руководства bash, применимая к вашему делу, такова:

SIMPLE COMMAND EXPANSION

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right.

  1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.

  2. The words that are not variable assignments or redirections are expanded. If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments.

  3. Redirections are performed as described above under REDIRECTION.

  4. The text after the = in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable.

Ваша подстановка команды $(echo "echo hi > /tmp/hi")будет расширена в точке 2, а поскольку перенаправление >не могло быть помечено для последующей обработки в точке 1 (, так как оно появилось только в результате подстановки команды ), это не будет выполнено в соответствии с пунктом 3.

Если перенаправления не были предварительно -обработаны перед расширениями, то что-то вроде

to='>'; echo foo $to bar

будет отображать fooв файле bar, а не просто отображать foo > bar, как это делается.

Обратите внимание, что bashотличается от других оболочек тем, что он также выполняет разделение + подстановку слова, следующего за оператором перенаправления (, и умирает с «неоднозначным перенаправлением», если оно расширяется до нескольких слов ). Например, это

var='a b'; echo > $var

выдаст ошибку в bashвместо того, чтобы затирать файл с именем a b(, как это делают другие оболочки ).

0
29.03.2021, 16:17
0 ответов

Теги

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