Applescript 我可以在自动机内部使用expect吗?

Applescript 我可以在自动机内部使用expect吗?,applescript,expect,Applescript,Expect,我有这样一个脚本: export P4PORT=192.168.1.132:1666 passwd=`security find-generic-password -ws Exchange | /usr/bin/perl -pe "s/\n//g"` /usr/bin/expect -c "spawn /Users/myname/bin/p4 login; expect \"Enter password:\"; send \"$passwd\r\"; interact" res=`/Users

我有这样一个脚本:

export P4PORT=192.168.1.132:1666
passwd=`security find-generic-password -ws Exchange | /usr/bin/perl -pe "s/\n//g"`

/usr/bin/expect -c "spawn /Users/myname/bin/p4 login; expect \"Enter password:\"; send \"$passwd\r\"; interact"
res=`/Users/myname/bin/p4 login -s`

osascript <<EOF
    tell app "System Events" to display dialog "$res" buttons "OK" default button 1
EOF
当作为一个简单的shell脚本运行时,它可以完美地运行

然而,当我在MacOSX上的Automator中运行它时,它无法登录

似乎失败的部分是预期的部分。如果我用在applescript中的终端内部执行操作来代替它,那么脚本工作得很好。然而,这是一个相当丑陋的解决方案-它弹出一个终端,并在那里进行所有的键入

问题真的与expect有关吗?它能被改变吗

因为这必须作为一种服务来实现,所以保持这种方式是很好的


谢谢。

结果表明问题与所列问题类似:

你需要使用

expect eof
exit
而不是

interact
这很有效,但我不知道为什么