将shell脚本的输出重定向到文本文件

时间:2014-11-07 07:36:20

标签: linux bash shell at-job

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

shell正在执行您正在请求的内容:它正在运行at命令,并将其输出重定向到该文件。因此,虽然您可能希望(或者甚至期望)您安排的at工作的输出结束,但这根本不是您所说的。您说,并且,#34;请将计划操作的输出重定向到此文件。"

解决方法有点麻烦,但考虑到上述情况,应该有意义。

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

答案 1 :(得分: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.txt表示应将at的输出发送到data.txt。此重定向不会影响最终运行shelltest.sh时发生的情况。