将输入发送到由“at命令”调用的程序

时间:2016-06-13 14:01:50

标签: linux bash at-job

我有一个接受2个提示(y / n)的程序。例如:

stopprogram

do you want to stop the program (Y/N)? y
do you want to send an email to the admin about it (Y/N)? y

现在,我想使用'at'命令自动执行此操作。以下适用于Solaris但不适用于Linux RHEL:

at now +5 minutes << EOF
 > for i in {1..2}
 > do
 > echo 'y'
 > done | stopprogram
 > EOF
commands will be executed using /usr/bin/bash
...
...

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

您的问题可能是因为<<EOF之间的空格。

请注意,有一个特殊程序yes用于重复输出由其所有参数组成的行。默认情况下,它输出&#39; y。它是专门为强制脚本化流程创建的。

因此,您的命令的简短版本将如下所示:

at now +5 minutes <<EOF
   yes | stopprogram
EOF

答案 1 :(得分:0)

我找到了解决方案。这将有效:

at now+5 min <<EOF
bash -l -c 'yes | stopprogram'
EOF

就是这样!