AppleScript:如何在字符串中转义控制字符

时间:2014-12-19 20:41:28

标签: applescript

我想知道在AppleScript中是否可以转义控制字符并输入一串文本。例如,AppleScript是否支持十六进制转义码?如果是这样,怎么样? (我用Google搜索但没有发现任何内容,抱歉,如果这是一个微不足道的问题。)


上下文

对于某些任务,我想向iTerm2写一个^D\x04)来表示stdin的结束。这是我的剧本的骨架:

#!/usr/bin/osascript
tell application "iTerm"
    create window with default profile
    tell the current window
        tell the current session
            # write some text -- launch an interactive program
            # write some text to stdin, typically from the clipboard

            ##### PROBLEM HERE
            # close stdin -- write text ^D? How to achieve this?
        end tell
    end tell
end tell

我不想使用击键,因为这需要额外的权限。如果没有逃避^D,有没有更好的方法?欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

在Mac OS X 10.5及更高版本中,使用"字符ID",例如:

set ctrlD to character id 4

该数字应对应于字符的Unicode代码点值,对于字符0-127,该值与其ASCII值相同。

在10.4.11及更早版本中,使用" ascii character",例如:

set ctrlD to ascii character 4

该数字应为该字符的ASCII值。自Mac OS X 10.5以来,Apple已弃用此表单,但仍然适用于OS X 10.10.1。

然后你应该能够治疗" ctrlD"像任何其他字符串。 Haven并没有特别尝试使用iTerm,但如果问题是如何将不可打印的字符变成AppleScript字符串,那么就是这样。

答案 1 :(得分:1)

要发送命令,您可以:

tell application "System Events" to key code 2 using {shift down, Control down}