我正在用这个脚本增强我的.bash_profile。它提取.ipa并显示配置文件信息。 .ipa文件被解压缩到临时目录。
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
然而,手动访问它是有效的:
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">
...
为什么在shell脚本中无法实现这一点?
答案 0 :(得分:1)
引用变量时,通配符不会扩展。由于您希望展开*.app
,因此您必须省略引号:
security cms -D -i ${pathToFile}
只要$pathToFile
不包含任何空格,这将有效。
如果有可能,您需要拆分变量,因此通配符在引号之外。
security cms -D -i "${myTmpDir}/Payload/"*.app/embedded.mobileprovision