从 shell 运行时,AppleScript 总是会在我的日志中回显最后一行

问题描述 投票:0回答:1

(可能是愚蠢的)AppleScript 问题:我有一个简单的 OSAScript(通过 Jamf 策略从 bash 脚本函数运行),它为控制台用户设置了一些 Finder 侧边栏选项。它运行良好,但我注意到最后一行总是在我的 Jamf 日志中得到回显 - 但在终端本地运行时不会得到回显)。

这是 Jamf 的东西、shell 的东西还是 AppleScript 的东西?

示例代码(为简单起见被截断):

function configure_sidebar() {

    echo "Configuring Finder Sidebar settings for console user..."
    sudo -u "$CONSOLE_USER_NAME" osascript -e '
    activate application "Finder"
    tell application "System Events"
    tell process "Finder"
  
    delay 1.0
    select menu bar 1
    click menu bar item "Finder" of menu bar 1
    delay 0.5
    click menu 1 of menu bar item "Finder" of menu bar 1
    click menu item "Settings…" of menu 1 of menu bar item "Finder" of menu bar 1
  
    repeat until exists window "Finder Settings"
    end repeat
  
    click button "Sidebar" of toolbar 1 of window "Finder Settings"
    
    if (value of checkbox 1 of scroll area 1 of window "Finder Settings" as boolean) then
    click checkbox 1 of scroll area 1 of window "Finder Settings"
    end if
    
    if (value of checkbox 2 of scroll area 1 of window "Finder Settings" as boolean) then
    click checkbox 2 of scroll area 1 of window "Finder Settings"
    end if
    
    if not (value of checkbox 3 of scroll area 1 of window "Finder Settings" as boolean) then
    click checkbox 3 of scroll area 1 of window "Finder Settings"
    end if
   
    end tell
    end tell
    '
}

脚本运行良好,但我的 Jamf 日志在最后一行回显以下内容:

“窗口 Finder 滚动区域 1 的复选框 3 应用程序进程 Finder 设置”

(不管最后一个命令是什么,它总是会得到回显,就好像我没有正确关闭 OSAScript,或者它不喜欢嵌套在函数中一样)。

applescript osascript
1个回答
0
投票
一般来说,AppleScript 中最后一个语句的输出作为“

result”返回。复选框 3 很可能有效并按照您所描述的方式返回,然后向上传递到要记录的链。

这段代码应该演示

result 的工作原理。它假定 Finder 首选项已打开并且侧边栏选项卡处于活动状态。

如果第一个复选框被选中,那么脚本将取消选中该框并生成一个

结果。如果未选中,则它将不执行任何操作,因此不会生成结果

activate application "Finder" tell application "System Events" tell process "Finder" set wfp to window "Finder Preferences" if (value of checkbox 1 of wfp as boolean) then -- if checked… perform action "AXPress" of checkbox "All My Files" of wfp end if --> action "AXPress" of checkbox "All My Files" of window "Finder Preferences" of application process "Finder" of application "System Events" end tell end tell
您可以在 

Applescript 语言指南中阅读有关全局常量的信息,但这是相关部分:

执行语句时,AppleScript 会将结果值(如果有)存储在预定义属性

result

 中。该值将保留在那里,直到执行另一个生成值的语句为止。在执行产生结果的语句之前,
result
 的值是未定义的。您可以通过查看脚本窗口的结果窗格来检查脚本编辑器中的结果。

所以在这种情况下,复选框的初始状态决定是否有结果要记录。我应该补充一点,

结果也将出现在脚本编辑器的日志窗口中。

© www.soinside.com 2019 - 2024. All rights reserved.