applescript oneliner

时间:2010-11-05 18:15:36

标签: applescript

是否可以将applescript行连接成一个(在ruby中可以使用;)?

4 个答案:

答案 0 :(得分:6)

不是真的。可以做的最多的是采用一个简单的if-then语句并将其组成一行......

if (variable) then 
    return true
end if

... ...变为

if (variable) then return true

如果要在shell脚本中包含osascript命令,则多行文字必须用-e分隔...

osascript -e 'if (variable) then' -e 'return true' -e 'end if'

但那是关于它的程度。 Applescript文件不像大多数其他编程语言那样简单直观的文本文件(不幸的是),我们必须依靠其专业的编辑器进行线路管理。

答案 1 :(得分:3)

这取决于您的代码。

当您使用AppleScript进行GUI脚本编写时,您通常可以将一堆嵌套的tell块写成一行。

例如这些嵌套的tell块:

tell application "System Preferences"
    activate
end tell

tell application "System Events"
    tell application process "System Preferences"
        tell window "System Preferences"
            tell scroll area 1
                tell button "General"
                    click
                end tell
            end tell
        end tell
    end tell
end tell

他们也可以写成:

tell application "System Preferences" to activate
tell application "System Events" to tell application process "System Preferences" to tell window "System Preferences" to tell scroll area 1 to tell button "General" to click

答案 2 :(得分:0)

如果你真的想避免-e并强迫所有内容排在一行,你可以通过echo推送所有内容

osascript -e "`echo -e \"tell application \\"MyApp\\"\nactivate\nend tell\"`"

其中"变为\\",换行符变为\n

答案 3 :(得分:0)

我已将AppleScript从块格式重新排列为单行格式:

阻止格式

tell application <application>
  activate
  open location <url>
end tell

单行格式

osascript -e "tell application \"<application>\" to activate & open location \"<url>\"";