如何为通过cron运行的活动bash脚本提供输入

时间:2013-12-20 18:33:05

标签: bash cron

我有一个每天运行多次的bash脚本。运行的次数取决于脚本运行的时间长短。在脚本的某一点上,我希望能够提供输入。基本上,我希望脚本在它正在写入的日志文件中提供输出请求输入。我认为最好的方法是让脚本进入“infinte”while循环,每5分钟检查一个文件是否存在。我知道如何检查文件是否存在,但我仍然相当新的bash脚本,所以我不知道如何编写代码进入while循环。我很感激你的帮助。

2 个答案:

答案 0 :(得分:0)

您提出的问题的解决方案是:

# Wait for file to be created
while [ ! -f "input_file" ]
do
    sleep 5m
done
# Do something now that the file exists

最好让cronjob每5分钟运行一次,如果文件尚不存在则退出。

答案 1 :(得分:0)

如果安装了zenity package,可以使用它来创建自定义gui对话框。在我的测试中,当从cron启动的脚本中使用时,这似乎正常。例如,我们有一个小例子脚本,我称之为“proceed.sh”:

#!/bin/bash
if zenity --display=:0 --question; then
    zenity --display=:0 --info  --text="You pressed yes"
else
    zenity --display=:0 --info  --text="You pressed no"
fi

并添加一个cron条目(每分钟运行一次 - 你可能不希望这样):

* * * * * ~/proceed.sh

请注意,我们需要硬编码对话框所显示的内容,因为cron上下文中的脚本不会知道。

zenity有很多选项可以让你创建自定义对话框。