这是我的脚本,它使用 expect来填写 rsync 的密码字段,这是我让它与变量一起工作的唯一方法($FILE,欢迎提出建议)。
它在 cmd 中工作,输出符合预期(-P 开关输出进度条,所以我知道它无需检查即可工作)。
#!/bin/bash
cd "/cygdrive/c/"
FILE=$(cygpath -u $1); #full file path to sync
a='USER@HOST:/; expect "*?assword:*" {send "user_pass\r";interact};'
LINE="spawn rsync -P --port=port $FILE "$a
expect -c "$LINE"
这是我在 .sublime-project 文件中的 Sublime Text 构建系统(我在路径中包含了 cygwin/bin,因此它可以识别 bash。)。
{
"name" : "RSync This",
"shell": true,
"cmd": ["bash","/cygdrive/c/rsync.sh","$file"]
}
输出:
spawn rsync -P --port=22 /cygdrive/c/test USER@HOST:/
USER@HOST's password: [Finished in 0.8s]
没有进度条,没有变化。无法弄清楚什么给了。
任何建议我的错误在哪里?