2011-08-06 6 views
12

私はAppleScriptの小さな部分を利用するシェルスクリプトに問題があります。私はAppleScriptエディタでそれをコンパイルするときに動作します。シェルスクリプト内ではありません。osascript/syntax error:行の終わりが必要ですが、コマンド名が見つかりました。 (-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(作品):ここで

44:49: syntax error: Expected end of line but found command name. (-2741) 23:28: syntax error: Expected end of line but found “after”. (-2741)

は、シェルコードである

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 

[更新]/[解決]

これはの世話をしました私が使っているAppleScriptを変更しようとしていたどんな種類の問題でも地獄のスクリプト:

## 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を置くことができるしていることは非常にクールです。 ;-)

答えて

1

の代わりに-eフラグを使用して、あなたが実行するアプリケーションやプロセスを言っている場合、あなたは、単に小さなテキストファイルで、あなたのAppleScriptコードを保存し、また

osascript /path/to/script 

を呼び出すことができますただ一つのことは、あなたがこのようにそれを書き込むことができます。

tell process "MyProcess" to perform action. 

を今、私はすべてのラインが接続するとは思わないので、おそらく動作しません-eフラグとは別に、各ラインを実行し、それについて考えます1つのプログラムとして実行できます。たとえば、変数を設定するためにosascript -eを使用してテストしました。私は別のosascript -eを使って変数を読み込みましたが、それはできませんでした。

[*]

+1

ありがとうございます。私は実際にそれを修正するためのすべての作業を行うことなく、シェルスクリプトに直接AppleScriptを入れる優れた方法を考え出しました。 (上記を参照) - –

5

あなたはそれらの間(例えば、変数のような)状態を使用することができないように、各osascript(1)コマンドは、従って完全に別個のスクリプト完全に独立したプロセスであり、。 -eオプションを複数使用して、osascriptに複数行のスクリプトを作成することができます。それらのスクリプトは、スクリプト間の改行を伴って連結されます。十分に長いスクリプトの場合は、最終的な解決策で使用したように別のファイルまたは「ここの文書」を使用するのがよい方法です。また

、スクリプトはほとんどの場合はAppleScript、あなたはosascriptを呼び出すシェバングファイル使用して簡単にAppleScriptのある「シェル」スクリプトを作ることができます(または完全に!):

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

を...そして必要に応じてdo shell scriptを使用してください。

関連する問題