Shell-Skript von Applescript

Das hat mich verrückt gemacht. Ich habe ein Skript, das eine ausführbare Datei in ist /usr/local/bin/, die perfekt in Terminal funktioniert, aber ich kann Applescript nicht dazu bringen, es aufzurufen:

RunShell("estc R505")

on RunShell(oscript)
    do shell script oscript
end RunShell

macht nichts. Ich habe versucht, stattdessen den tatsächlichen Standort anzugeben /usr/local/bin/estcund ihn in bash mit bash oder sh ... anzurufen ... nichts funktioniert. Es sollte eine Textzeichenfolge zurückgeben und funktioniert perfekt im Terminal.

Was ist estc, ist es eine ausführbare Binärdatei oder eine ausführbare Skriptdatei? Wenn letzteres ausführbare Dateien aufruft und nicht standardmäßig an PATH den do shell script Befehl übergeben wird , sollte der zweite Teil meiner Antwort helfen. BTW Was macht der estc Befehl ?

Antworten (2)

Wenn Sie im Skript-Editor den folgenden AppleScript- Befehl ausführen :

do shell script "echo $PATH"

Sie werden sehen, wie das PATHfür den do shell script Befehl definiert ist :

"/usr/bin:/bin:/usr/sbin:/sbin"

Sie müssen den vollständig qualifizierten Pfadnamen zu jeder ausführbaren Datei hinzufügen , die sich nicht in der PATHoben gezeigten befindet, damit sie in einem AppleScript- do shell script Befehl funktioniert .


Eine andere Möglichkeit besteht darin, dem Befehl einen export PATH Befehl hinzuzufügen , z.do shell script

set exportPath to "export PATH=$PATH:/usr/local/bin:/opt/X11/bin:"

Und in Ihrem Fall verwenden Sie es als, zB:

RunShell("estc R505")

on RunShell(oscript)
    set exportPath to "export PATH=$PATH:/usr/local/bin:/opt/X11/bin:; "
    do shell script exportPath & oscript
end RunShell

Passen Sie natürlich den ...Teil von an export PATH=$PATH:..., um Ihren tatsächlichen Wert widerzuspiegeln PATH, der nicht in der Standardeinstellung PATH enthalten ist , die an den do shell script Befehl übergeben wird , wie weiter oben gezeigt.

Das könnte funktionieren:

do shell script "PATH=/usr/local/bin:$PATH estc R505"