Передайте команду «at» в виде строковой команды вместо пути к сценарию, при этом он запускается немедленно

ваши данные в dat, используйте gnu sed;

$ sed -E 's/.*var1:\s(\S+).+var2:\s(\S+).*|.*var2:\s(\S+).+var1:\s(\S+).*/\1\4 \2\3/' dat
3
24.04.2020, 14:51
2 ответа

Вы можете указать команду в одинарных кавычках и передать ее в atкак есть:

echo 'echo "xyz" >> ~/testtest.txt' | at now + 1 minutes

В качестве альтернативы, если вы используете bash или другой скрипт, поддерживающий замену процесса , вы можете выполнить:

at now + 1 minutes < <(echo 'echo "xyz" >> ~/testtest.txt')

Это в основном передает имя файла в atтак же, как передает ему файл с командами.

Однако использование heredoc, как , предложенное Кусаланандой , должно быть более переносимым, поскольку оно не зависит от того, поддерживает ли ваша оболочка подстановку процессов.

2
19.03.2021, 02:26

Используйте здесь -документ, чтобы передать скрипт для последующего запуска в командной строке:

at now + 1 minute <<'END_AT'
echo 'xyz' >> ~/testtest.txt
END_AT

Документ здесь -цитируется (с использованием <<'END_AT'вместо <<END_AT), чтобы остановить текущую оболочку от расширения переменных и т. д. в тексте скрипта. Документ будет передан на atпри стандартном вводе.

7
19.03.2021, 02:26

Теги

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