我正在尝试将我的脚本输出(使用at命令安排)重定向到文本文件。
at -f shelltest.sh -v 11:33 > data.txt
即使脚本运行成功,输出也不会保存到输出文本文件(data.txt)。
假设我的脚本要求检查“adb设备”然后执行重启,当我使用at命令调度脚本时,既没有显示命令提示符,也没有将脚本的输出保存在文本文件中。
如何在文本文件中保存脚本的输出。
注意:
文本文件具有读/写权限。
答案 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'
或者您可以使用echo
或printf
:
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
有四个参数:-f
,shelltest.sh
,-v
和11:33
。 shell不关心这些论点的含义。 shell只是将它们传递给at
。
shell解释> data.txt
表示应将at
的输出发送到data.txt
。此重定向不会影响最终运行shelltest.sh
时发生的情况。