自动结束等待您按ENTER的脚本

时间:2013-07-31 23:26:41

标签: linux bash expect

我希望能够使用Cron自动执行CopyConsole,这是在服务器的Copy.com上执行文件同步的程序

问题是当没有按下ENTER键时执行没有终止。

我尝试了各种形式的脚本,最好的是这个,但没有成功:

#!/bin/bash

timeout=600

expect() {
   local expect="$1" send="$2"
   local delim="${expect:(-1):1}"
   local buffer="" block=""
   while read -u3 -r -t$timeout -d "$delim" block; do
      buffer="$buffer$block$delim"
      case "$buffer" in
         *"$expect")
            echo "$send" 1>&3
            return
            ;;
      esac
   done
}

exec 3<>/usr/local/copy.com/copy_sync.sh
expect "All Files Up To Date" "\r"

有人可以帮我找到解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:2)

解决!

必须使用“#!/ usr / bin / expect”并使用“spawn”执行

#!/usr/bin/expect

set timeout 600
spawn /usr/local/copy.com/x86_64/CopyConsole -u=mail@copyaccount -r=/var/backups/copy.com -p=password
expect "All Files Up To Date" { send "\r"}

感谢您的评论。