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

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

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

#!/#bin/bash

echo "Done!"

我输入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

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

myusername@machine:path$ echo $SHELL
/bin/bash

答案1

您正在立即执行脚本,并安排它的输出由 执行at。不用说这会失败。

我想你想要的是这个

#!/bin/bash
echo "Done!"

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

使其可执行:

chmod a+x myscript

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

at 1549 <<'X'
./myscript > myscript.log 2>&1
X

答案2

通过系统执行的命令的任何输出at都通过电子邮件发送。

其次,当它们被执行时,它已经与您当前的 tty 解除关联,因此无法与其交互,即使您想要它。

相关内容