Ios 使用xcrun打包时的怪异(使用变量时代码设计失败)

Ios 使用xcrun打包时的怪异(使用变量时代码设计失败),ios,xcode,bash,cordova,build,Ios,Xcode,Bash,Cordova,Build,遇到以下行为时,我尝试参数化我的应用程序构建脚本: 该应用程序已经生成(使用“cordova build ios--release”)并可用 打电话时: $ xcrun ... -sign "iPhone Developer: XXX" -embed ... 一切顺利。到目前为止还不错:) 现在我想在调用中使用一个变量,如: $ identity="iPhone Developer: XXX" $ xcrun ... -sign $identity -embed ...

遇到以下行为时,我尝试参数化我的应用程序构建脚本: 该应用程序已经生成(使用“cordova build ios--release”)并可用

打电话时:

   $ xcrun ... -sign "iPhone Developer: XXX" -embed ...
一切顺利。到目前为止还不错:) 现在我想在调用中使用一个变量,如:

   $ identity="iPhone Developer: XXX" 
   $ xcrun ... -sign $identity  -embed ...
在这里,我稍后将$identity参数传递给构建脚本

像上面那样执行'xcrun…'逻辑上会导致'codesign'命令只获取“iPhone”作为参数,并且失败(当然:)

因此,我试图掩盖$identity

成功的最贴切要求是使用

   $ xcrun ... -sign \""$identity"\"  -embed ...
这会导致xcrun-like调用“代码设计”

   $ xcrun ... -sign \""$identity"\"  -embed ...
   [...]
   /usr/bin/codesign ... --sign "iPhone Developer: XXX" ...
   Program /usr/bin/codesign returned 1 : ["iPhone Developer: XXX": no identity found
]
有趣的是,直接从shell(/bin/bash)执行命令可以正常工作

我还试图定义已经有双引号的$identity,但这会导致最初的行为完全没有引号。到目前为止,在各种组合中使用单引号也没有任何帮助

知道为什么xcrun会出错吗。。。或者,如何做得不同? 如前所述:目标是拥有一个参数化的构建脚本

--------系统参数--------- $uname-a 达尔文安联13.0.0达尔文内核版本13.0.0:Thu Sep 19 22:22:27 PDT 2013;根目录:xnu-2422.1.72~6/RELEASE\u X86\u 64 X86\u 64

$xcrun-版本
xcrunversion22.

好吧,这种奇怪的现象似乎是因为我像

   xcrun -sdk iphoneos PackageAppliction $package -o $ipafile -sign \"$identity
\" -embed $profile
首先将零件(选项1$variable1选项2$variable2…等)组装到一个字符串上,如

   assembledstring="-sdk iphoneos PackageAppliction $package -o $ipafile -sign \"$identity
\" -embed $profile"
只有这样做了

   sh -c "xcrun $assemledstring"
对问题进行排序

或者使用:
$(xcrun--sdk iphoneos--find packageapplication)$package-o…