0

私は AppleScript を使用して、簡単なシェル スクリプトを起動しています。

tell application "Terminal"
activate
do script "$(" & quoted form of MyScriptPath & ")"
end tell

ターミナルウィンドウを適切に起動し、期待どおりに入力します。

~$ $('/my script path/myscript.sh')

ただし、最初にスクリプトを評価/呼び出すときに、STDOUT (echo 経由) に出力されたものはすべて $( ) 内にあるかのように評価されるようです。

#!/bin/sh
echo "foobar"

生成:

-bash: foobar: command not found

私は広く検索しましたが、スクリプトの場所をターミナルに送信する前に、AppleScript で (「引用形式」を使用するのではなく) パス内のスペースをエスケープする適切な方法を実際には見つけられませんでしたが、それをはるかに好みます。ターミナルで起動するスクリプトはインタラクティブであり、集中する必要があるため、「do shell script」ではなく「do script」を使用しています。

$( ) を介してスクリプトを呼び出すときに、STDOUT にエコーするにはどうすればよいですか?

4

1 に答える 1

1

そのコマンドの出力を別の文字列に含めるためだけに、コマンド$(...)実行する必要はありません。あなたは単に必要です

tell application "Terminal"
activate
do script "/my script path/myscript.sh"
end tell
于 2013-02-21T00:07:20.863 に答える