为什么以下对“at”的调用不执行 bash 脚本?

And*_*rew 0 shell-script at

我制作了一个名为的 bash 脚本test.sh,其中包含以下内容:

#!/#bin/bash

echo "Done!"
Run Code Online (Sandbox Code Playgroud)

我输入bash test.sh | at 1549

myusername@machine:path$ bash test.sh | at 1549
warning: commands will be executed using /bin/sh
job 4 at Fri Sep  3 15:49:00 2021
myusername@machine:path$ date
Fri Sep  3 15:48:22 EDT 2021
myusername@machine:path$ date
Fri Sep  3 15:49:12 EDT 2021
Run Code Online (Sandbox Code Playgroud)

为什么显示脚本没有执行?是不是因为我的shell是bash,如下图?

myusername@machine:path$ echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)

roa*_*ima 5

您将立即执行该脚本,并安排其输出以由 执行at。不用说这会失败。

我想你想要的是这个

#!/bin/bash
echo "Done!"
Run Code Online (Sandbox Code Playgroud)

假设您已将其写入一个名为myscript.

使其可执行:

chmod a+x myscript
Run Code Online (Sandbox Code Playgroud)

然后将其排队等待 15:49 执行并捕获输出myscript.log(如果您没有捕获输出,它将通过电子邮件发送到您的本地 UNIX/Linux 帐户,或者如果根本没有安装邮件子系统,那么它就会被丢弃):

at 1549 <<'X'
./myscript > myscript.log 2>&1
X
Run Code Online (Sandbox Code Playgroud)