Problem passing parameter to applescript via terminal/bashscript

杀马特。学长 韩版系。学妹 提交于 2019-12-12 23:24:31

问题


I'm trying to control multiple VLC instances via bashscript and applescript - i access them via their pid. I got this working in a small manual test, which works fine:

tell application "System Events"
set VLC_VGA to application processes whose unix id is 598
repeat with proc in VLC_VGA
    set the frontmost of proc to true
    keystroke "p" using {command down}
end repeat
end tell

I now want to dynamically insert the pid (598 or whatever it may be). This is what I have so far - but won't work:

property accumulator : ""

on run argv
set vlcPID to item 1 of argv
set accumulator to do shell script "echo 'echo test returns'" without altering line endings
startPlayingVLC(vlcPID)
set ln to do shell script "echo 'started VLC instance: " & vlcPID & "'" without altering line endings
set accumulator to accumulator & ln
return accumulator
end run

on startPlayingVLC(pid)
tell application "System Events"
    set ln2 to do shell script "echo 'starting VLC instance: " & pid & "'" without altering line endings
    set accumulator to accumulator & ln2
    set VLC_VGA to application processes whose unix id is pid
    set ln3 to do shell script "echo 'VLC_VGA process: " & VLC_VGA & "'" without altering line endings
    set accumulator to accumulator & ln3
    repeat with proc in VLC_VGA
        set the frontmost of proc to true
        keystroke "p" using {command down}
    end repeat
end tell
end startPlayingVLC

I call the script via

osascript /Users/devuser/Development/AppleScript/playVLCAppViaPID.scpt 598

This does not work anymore - the pid is not recognized. The do shell script calls are based on another question on do shell scripts in loops, which work fine.

So far what I have found out is that it can't recognize the pid on the following line

 set VLC_VGA to application processes whose unix id is pid

The echo (ln3) on VLC_VGA afterwards returns nothing even though the pid is passed correctly and the echo (ln2) shows the correct pid.

What am I doing wrong here?


回答1:


Issue solved: the pid needs to be passed as an integer.

As in:

set VLC_VGA to application processes whose unix id is pid as integer


来源:https://stackoverflow.com/questions/6292962/problem-passing-parameter-to-applescript-via-terminal-bashscript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!