2
{ while IFS=';' read  u1 p1 u2 p2; do
            imapsync/imapsync --usecache --host1 secure.emailsrvr.com --user1 "$u1" --password1 "$p1" \
                     --host2 imap.gmail.com --ssl2 --user2 "$u2" --password2 "$p2" ...
     done ; } < users1-33.txt

我怎样才能连续运行这个脚本,以便在它完成时重新开始?

4

3 回答 3

4

许多 UNIXy 系统都有一个称为watch重复执行命令的工具(默认情况下每 2 秒执行一次)。虽然watch不是标准的 POSIX 工具,但如果您拥有或可以安装它,它是一种非常简单的方法,可以基本上实现您所要求的。将您的代码放在一个文件中并观察它:

watch bash -c your_script
于 2012-11-13T20:46:04.070 回答
3

尝试将其包装在一个函数中并对其进行迭代。

function go()
{
    { while IFS=';' read  u1 p1 u2 p2; do
            imapsync/imapsync --usecache --host1 secure.emailsrvr.com --user1 "$u1" --password1 "$p1" \
                     --host2 imap.gmail.com --ssl2 --user2 "$u2" --password2 "$p2" ...
     done ; } < users1-33.txt

}

while true
do
    go
done

或者您可以go()从另一个文件中引用:

   #!/bin/sh

   . /the/original/source_file.sh

   go
于 2012-11-13T20:39:25.810 回答
1

您是否考虑过将脚本放入您的 crontab 中以每分钟运行一次?

等等基于debian的系统。(Ubuntu)

crontab -e

# m h  dom mon dow   command
*/1 * * * * /usr/local/bin/scriptToRun.sh

会让脚本每分钟运行一次

更多关于 Cron

于 2012-11-13T20:40:25.650 回答