我正在尝试将脚本的输出(使用 at 命令安排)重定向到文本文件。
at -f shelltest.sh -v 11:33 > data.txt
即使脚本运行成功,输出也不会保存到输出文本文件(data.txt)。
假设我的脚本要求检查“adb 设备”然后执行重新启动,当我使用 at 命令安排脚本时,既不会显示命令提示符,也不会将脚本的输出保存在文本文件中。
如何将脚本的输出保存在文本文件中。
注意:
文本文件具有读/写权限。
shell 正在执行您的请求:它正在运行at
命令,并将其输出重定向到文件。因此,尽管您可能希望(甚至期望)at
您安排的工作的输出最终会在那里,但这根本不是您所说的。您正在说并得到“请将调度操作的输出重定向到此文件”。
解决方法有点麻烦,但鉴于上述情况,希望应该是有意义的。
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
尝试:
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
最终运行时发生的情况。