【发布时间】:2015-02-05 16:29:24
【问题描述】:
我正在尝试使用带有准备好的命令的苹果脚本打开终端,但没有执行它并允许用户通过单击 Enter 来执行此操作(所以我不想使用告诉终端执行脚本)
我使用的一种方法是使用击键:
告诉应用程序“终端”执行脚本“echo Hi!”
击键“abc” 结束告诉
但这对我不起作用。有什么想法吗?
【问题讨论】:
标签: macos shell terminal applescript
我正在尝试使用带有准备好的命令的苹果脚本打开终端,但没有执行它并允许用户通过单击 Enter 来执行此操作(所以我不想使用告诉终端执行脚本)
我使用的一种方法是使用击键:
告诉应用程序“终端”执行脚本“echo Hi!”
击键“abc” 结束告诉
但这对我不起作用。有什么想法吗?
【问题讨论】:
标签: macos shell terminal applescript
我认为您想启动终端并在终端中为用户准备好所有命令,因此他/她只需按“Enter”。如果是这样,您可以这样做:
tell application "Terminal"
activate
delay 1
tell application "System Events"
keystroke "echo hi"
end tell
end tell
然后用户只需按下Enter,命令echo hi就会执行。
【讨论】:
很难理解你的意思。
例如,您不能让终端等待用户单击其窗口。
(但您可以在终端窗口打开后轮询按键。)
为了让用户有意识地进入终端,你必须在你的代码之前使用一个对话框。
display dialog "Press ok to enter the terminal" buttons {"Cancel","Enter"} cancel button 1 default button 2
除此之外,您需要使用系统事件将击键发送到终端的方式
tell application "System Events"
tell application process "Terminal"
keystroke "abcd"
end tell
说完
您可以使用以下命令轮询终端执行脚本命令中的按键:
read -n 1 -s MYCHAR </dev/tty
这将强制用户在执行脚本中按回车键
a=`read`
【讨论】: