bash 不执行 'at -f foo.sh' 命令,即使使用 #!/bin/bash shebang

bash is not executed 'at -f foo.sh' command, even with #!/bin/bash shebang

我正在使用 'at' 命令创建 3 个目录,只是一个愚蠢的 bash 脚本:

#!/bin/bash
for i in {1..3}
do
mkdir dir$i
done

如果我直接在终端上执行该脚本,一切正常,但是当我使用 'at' 命令时,如下所示:

at -f g.sh 18:06

它只创建一个名为dir{1..3}的目录,将interval不是一个区间,而是一个包含一个元素{1..3}的列表。据此,我认为我的错误是使用 bash 脚本,因为 at 使用 /bin/sh 执行命令,但我不确定。 请告诉我,如果我是对的,我会很感激我的代码有一些替代方案,因为即使它没用我也很想知道 at 和 bash.

有什么问题

#! 行仅影响当您 运行 将脚本作为程序时发生的情况(例如,将其用作 shell 中的命令)。当您使用 at 时,它不是 运行 作为程序,它只是用作 /bin/sh 的标准输入,所以 shebang 没有任何效果。

你可以这样做:

echo './g.sh' | at 18:06