15

Applescript のごく一部を使用するシェル スクリプトで問題が発生しています。Applescriptエディターでコンパイルすると動作します。ただし、シェルスクリプト内ではそうではありません。

44:49: 構文エラー: 行末が必要ですが、コマンド名が見つかりました。(-2741) 23:28: 構文エラー: 行末が予期されていましたが、「後」に見つかりました。(-2741)

シェルコードは次のとおりです。

osascript -e 'tell application "System Events" -e 'activate'

osascript -e 'tell process "Application 10.5" -e 'set frontmost to true' -e 'end tell'

osascript -e 'delay 1' -e 'keystroke return' -e 'delay 1' -e 'keystroke return'

end tell

Applescript (動作します):

tell application "System Events"
activate
tell process "Application 10.5"
    set frontmost to true
end tell

delay 1
keystroke return
delay 1
keystroke return

end tell

[更新] / [解決済み]

これにより、アップルスクリプトを変更してシェルスクリプト内で動作するようにしようとしていたあらゆる種類の問題が処理されました。

## shell script code

echo "shell script code"
echo "shell script code"

## applescript code

osascript <<EOF
tell application "Scriptable Text Editor"
    make new window
    activate
    set contents of window 1 to "Hello World!" & return
end tell
EOF

## resume shell script...

純粋な AppleScript を直接シェル スクリプトに入れることができるのは非常に素晴らしいことです。;-)

4

2 に答える 2

6

osascript(1) コマンドは完全に別個のプロセスであるため、完全に別個のスクリプトであるため、それらの間で状態 (変数など) を使用することはできません。osascript複数のオプションを使用して複数行のスクリプトを作成でき-eます。それらはすべて改行で連結され、スクリプトを形成します。十分に長いスクリプトの場合は、最終的なソリューションで使用したように、別のファイルまたは「ヒア ドキュメント」を使用することをお勧めします。

また、スクリプトが大部分 (または完全に!) AppleScript である場合は、以下を呼び出すシバン ファイルを使用して、単に AppleScript である「シェル」スクリプトを作成できますosascript

#!/usr/bin/osascript
display dialog "hello world"

...そして、必要に応じて使用do shell scriptします。

于 2013-04-05T17:27:29.253 に答える
2

-e フラグを使用する代わりに、AppleScript コードを小さなテキスト ファイルに保存して呼び出すことができます。

osascript /path/to/script

また、アプリケーションまたはプロセスに 1 つのことだけを実行させる場合は、次のように記述できます。

tell process "MyProcess" to perform action.

考えてみると、すべての行が接続されて 1 つのプログラムとして実行されるとは思わないため、-e フラグを使用して各行を個別に実行することはおそらく機能しません。たとえば、変数を設定するために osascript -e を使用してテストしました。次に、別の osascript -e を使用して変数を読み取りましたが、できませんでした。

[ * ]

于 2011-08-06T03:24:49.220 に答える