bash不会在"at -f foo.sh"命令中执行,即使使用#!/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作为interval,而是将其作为一个包含一个元素{1..3}的列表。根据这一点,我认为我的错误是使用bash脚本,因为at使用/bin/sh执行命令,但我不确定。如果我是对的,请告诉我,我会很感激我的代码的一些替代方案,因为即使它是无用的,我也很想知道at和bash出了什么问题。

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

你可以做:

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

最新更新