2

我正在尝试将脚本的输出(使用 at 命令安排)重定向到文本文件。

at -f shelltest.sh -v 11:33 > data.txt

即使脚本运行成功,输出也不会保存到输出文本文件(data.txt)。

假设我的脚本要求检查“adb 设备”然后执行重新启动,当我使用 at 命令安排脚本时,既不会显示命令提示符,也不会将脚本的输出保存在文本文件中。

如何将脚本的输出保存在文本文件中。

注意:
文本文件具有读/写权限。

4

2 回答 2

2

shell 正在执行您的请求:它正在运行at命令,并将其输出重定向到文件。因此,尽管您可能希望(甚至期望)at您安排的工作的输出最终会在那里,但这根本不是您所说的。您正在说并得到“请将调度操作的输出重定向到此文件”。

解决方法有点麻烦,但鉴于上述情况,希望应该是有意义的。

at -v 11:33 <<'HERE'
shelltest.sh >data.txt
HERE

如果你有 Bash,你也可以使用 here 字符串:

at -v 11:33 <<<'shelltest.sh >data.txt'

或者您可以使用echoprintf

printf '%s\n' 'shelltest.sh >data.txt' | at -v 11:33
于 2014-11-07T08:06:44.140 回答
1

尝试:

echo 'shelltest.sh > data.txt' | at -v 11:33

笔记

考虑一下 shell 如何解释这个命令:

at -f shelltest.sh -v 11:33 > data.txt
  • shell 会看到at带有四个参数的命令:-fshelltest.sh-v11:33。shell 不在乎这些参数的含义。shell 只是将它们传递给at.

  • shell 解释> data.txtat应该将 的输出发送到data.txt. 此重定向不会影响shelltest.sh最终运行时发生的情况。

于 2014-11-07T08:01:14.323 回答