2017-06-04 18 views
0

パス内の空白をどう扱うかについての助けが必要です。osascriptで空白を扱う方法

以下の私の例では、ターミナルbashシェルでいくつかの変数を設定し、コマンドラインから "osascript"を実行してこれらの変数を利用して[do shell script] & ['display dialog']を実行します。コマンドラインからこれらを実行すると、私は別の結果を得ています。私の最終的な目標は、['do shell script']を実行できるようにすることです。パスに基づいてbashシェルスクリプトを実行します。この場合、パスにはパスが空白になります。

注:私が書いたApple Scriptから生成されたパスは[基本的には空白で]そのパスを別の変数と組み合わせているため、以下で定義される変数はINSTALLER_PATHです。このパスには名前にスペースが含まれているため、パスを引用符で囲む[[引用符で囲んだ形式に]設定を使用しています。

APPLEスクリプトの例:

'/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/'_DRAGONFRAME/ 

の代わりに見つけるために、アップルスクリプトを介してこれをテスト:


set pathToApp to POSIX path of ((path to me) as text) 
set dragonFrame to ("_DRAGONFRAME/") 
set INSTALLER_PATH to quoted form of pathToApp & dragonFrame 
display dialog INSTALLER_PATH 

は、このパスを{ティックに気づく}生成私が必要とする正確な構文は、私はそれがこれをコマンドラインから簡単にテストすることができます。これはまさに私がTerminalコマンドラインから設定し実行していることです。以下の例では、['display dialog']の実行と['do shell script']の実行に失敗します。

%> INSTALLER_PATH='/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/'_DRAGONFRAME/ 

%> ADMIN_USER_PROC="_Python_PySide_QT_Installer/Scripts/AdminUserProcesses.sh" 

%> osascript -e 'do shell script ("'"${INSTALLER_PATH}"'" & "'"${ADMIN_USER_PROC}"'")' 

はこのエラーを生成します。私は、二重引用符でパス全体を囲む方法がある場合は、二重引用符で囲まれたパスを取得し、すべての試みが失敗したものの、私の問題が解決されると思います。

0:217: execution error: sh: /Volumes/Free.Space/Shotgun: No such file or directory (127) 

%> osascript -e 'display dialog ("'"${INSTALLER_PATH}"'" & "'"${ADMIN_USER_PROC}"'")' 

は、このパスを生成します。

/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/_DRAGONFRAME/_Python_PySide_QT_Installer/Scripts/AdminUserProcesses.sh 

あなたが提供できるすべての助けを事前にありがとうございます。

+0

[ 'run'ハンドラパラメータとしてはAppleScriptに値を渡す方法。](https://stackoverflow.com/questions/16966117/combining-variables-in-bash-to-form-a:付き-command-to-applescript-using-the-osas/16977401#16977401) – foo

答えて

0

私はあなたがこの構文に似た何かを探していると思う:

set dragonFrame to ("/_DRAGONFRAME/") 
set INSTALLER_PATH to path of (pathToApp & dragonFrame) 

結果

'/Volumes/Free.Space/Shotgun Python Dragon Project 2017/DRAGONFRAME_SCRIPTS_MASTER_V1.02/Dragonframe_Scripts_Installer.app/_DRAGONFRAME/' 

をあなたが使用することができ、パスを二重引用符が必要な場合:

("\"" & pathToApp & dragonFrame & "\"") 

あなたを離れる引用されたフォームの引数を取り除く

set INSTALLER_PATH to ("\"" & pathToApp & dragonFrame & "\"") 
関連する問題