2016-12-23 1 views
0

このスクリプトで私の.bash_profileを強化しています。 .ipaを抽出し、プロビジョニングプロファイル情報を表示します。 .ipaファイルは一時ディレクトリに展開されます。macOSのbashスクリプトで新しく生成されたtempディレクトリにアクセスできない

function prov() { 
    myTmpDir=`mktemp -d 2>/dev/null || mktemp -d -t 'myTmpDir'` 
    unzip -q "$1" -d "${myTmpDir}"; 
    pathToFile="${myTmpDir}/Payload/*.app/embedded.mobileprovision" 
    security cms -D -i "${pathToFile}" 
} 

問題はsecurity cmsスクリプトで抽出されたファイルにアクセスできないことです。しかし

mles-MacBook-Pro:2015 mles$ prov gfhZH_v4.7.0_20161222_1544.ipa 
security: unable to open "/var/folders/vc/rmwcd9014fx1__syr239k1740000gn/T/tmp.CrAJbnwj/Payload/*.app/embedded.mobileprovision" for reading: No such file or directory 

手でそれをaccesing作品:

mles-MacBook-Pro:2015 mles$ ls /var/folders/vc/rmwcd9014fx1__syr239k1740000gn/T/tmp.CrAJbnwj/Payload/*.app/embedded.mobileprovision 
/var/folders/vc/rmwcd9014fx1__syr239k1740000gn/T/tmp.CrAJbnwj/Payload/fsg4zh.app/embedded.mobileprovision 

が手でsecurity cms -D -iも作品実行

mles-MacBook-Pro:2015 mles$ security cms -D -i /var/folders/vc/rmwcd9014fx1__syr239k1740000gn/T/tmp.CrAJbnwj/Payload/*.app/embedded.mobileprovision 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
... 

なぜシェルスクリプトでこれはできないのですか?

+1

変数を引用符で囲むと、 '*'ワイルドカードが展開されません。なぜそれを最初に使っていますか? – Barmar

+0

ああ。私は事前に.appフォルダの名前を知らない。しかし、1つの.appフォルダしかないので、最初にワイルドカードを解決する方法を見つける必要があります。 – mles

+0

引用符を削除すると機能します。私は間違いなくそのパスにスペースがないので、それらを削除することができます。あなたのコメントを答えに変換し、それを解決策としてマークします。 – mles

答えて

1

変数を引用すると、ワイルドカードは展開されません。あなたは*.appを拡張することにしたいので、あなたが引用符を省略することがあります。

security cms -D -i ${pathToFile} 

これは限り$pathToFileに空白が含まれていないように動作します。

可能性がある場合は、ワイルドカードが引用符の範囲外になるように変数を分割する必要があります。

security cms -D -i "${myTmpDir}/Payload/"*.app/embedded.mobileprovision 
関連する問題