将“at”延迟命令的输出通过管道传输到文件

将“at”延迟命令的输出通过管道传输到文件

我想在几分钟后追加到一个文件。

我天真地认为我可以这样做:

echo "hello world" >> /tmp/foo.txt | at NOW + 1 MINUTE

但这会立即附加到文件中。

我试过:

echo "hello world" | at NOW + 1 MINUTE >> /tmp/foo.txt

但这根本不写任何输出。

我知道我能做到:

$ at NOW + 1 MINUTE
warning: commands will be executed using /bin/sh
at> echo "HElllo world" >> /tmp/foo.txt
at>
at> <EOT>
job 11 at Wed Feb 17 17:58:00 2021

但这感觉就像“作弊”。

在不使用定界符的情况下如何表达我想要的内容?

答案1

重定向成功命令的 STDOUTat不是您想要的。

要创建执行“”的“at”作业echo "Hello, world",您将使用反斜杠 ( \),这使得后面的字符具有不同的特殊性(如果字符是特殊的,则将其视为非特殊的,或者如果字符不是特殊的,则将其视为特殊的) 。

at表演

echo "Hello, world"

您必须将该命令发送到at

echo "echo \"Hello  world\"" | at ...

另一种方法是使用两种引用形式:

echo 'echo "Hello, world"' | at ...

相关内容