bash如何在参数中保存引号来调用命令

时间:2015-04-08 08:11:00

标签: bash

我有以下代码,并且我需要传递带有空格的方案参数,所以我需要用引号发送它,但是当我调用我的主命令XCODE_RUN_COMMAND时,它是用引号制作我的方案但是它再添加一个引号。< / p>

[[ -n $XCODE_SCHEME ]] && XCODE_W_P_ARG="$XCODE_W_P_ARG -scheme \"${XCODE_SCHEME}\""
cd "${XCODE_PROJECT_DIRECTORY}"
XCODE_RUN_COMMAND="xcodebuild ${XCODE_W_P_ARG} -sdk ${XCODE_SDK} ${XCODE_CONFIG}"
$XCODE_RUN_COMMAND -showBuildSettings > xcodebuild.properties.prep || die "Fail got parameters from project parameter"

我得到以下输出和错误:

xcodebuild -project ... -configuration Debug -scheme '"QVC' - 'QA.xcscheme"' -sdk iphoneos -xcconfig .../config.xcodeconfig -showBuildSettings
11:00:28 xcodebuild: error: Unknown build action '-'.
我试图这样做:

"$XCODE_RUN_COMMAND" -showBuildSettings > xcodebuild.properties.prep || die "Fail got parameters from project parameter"

但是比引号中的所有命令都不起作用。

'xcodebuild -project .... -configuration Debug -scheme "QVC - QA.xcscheme" -sdk iphoneos -xcconfig .../config.xcodeconfig' -showBuildSettings

那么如何通过在方案名称中保存报价来调用$ XCODE_RUN_COMMAND?

我做了:

XCODE_W_P_ARG=( 'arg1' 'arg2' 'arg3' )
[[ -n $XCODE_SCHEME ]] && XCODE_W_P_ARG+=( -configuration  "$XCODE_CONFIGURATION" )
[[ -n $XCODE_SCHEME ]] && XCODE_W_P_ARG+=( -scheme "$XCODE_SCHEME" )
[[ -n $XCODE_SCHEME ]] && XCODE_W_P_ARG+=( -target "$XCODE_TARGET" )
cd "${XCODE_PROJECT_DIRECTORY}"
xcodebuild "${XCODE_W_P_ARG[@]}" -sdk "$XCODE_SDK" "$XCODE_CONFIG" - showBuildSettings > xcodebuild.properties.prep || die "Fail got parameters from  project parameter"

并输出:

xcodebuild arg1 arg2 arg3 -configuration Debug -scheme 'QVC - QA.xcscheme' -target '' -sdk iphoneos '-xcconfig .../src/config.xcodeconfig' -showBuildSettings
11:52:55 xcodebuild: error: invalid option '-xcconfig .../src/config.xcodeconfig'

1 个答案:

答案 0 :(得分:0)

目前,$XCODE_SCHEME周围的引号未按预期工作,因此"QVC-QA.xcscheme"被视为三个独立的参数。改为使用数组作为参数:

XCODE_W_P_ARG=( 'arg1' 'arg2' 'arg3' ) # whatever was in there before the posted code
[[ -n $XCODE_SCHEME ]] && XCODE_W_P_ARG+=( -scheme "$XCODE_SCHEME" )
cd "$XCODE_PROJECT_DIRECTORY"
xcodebuild "${XCODE_W_P_ARG[@]}" -sdk "$XCODE_SDK" "$XCODE_CONFIG" -showBuildSettings > xcodebuild.properties.prep || die "Fail got parameters from project parameter"

使用最新更新中的代码:

XCODE_W_P_ARG=()
XCODE_CONFIG=( -xcconfig .../src/config.xcodeconfig ) # "..." looks like a typo
if [[ -n $XCODE_SCHEME ]]; then
    XCODE_W_P_ARG+=( -configuration  "$XCODE_CONFIGURATION" )
    XCODE_W_P_ARG+=( -scheme "$XCODE_SCHEME" )
    XCODE_W_P_ARG+=( -target "$XCODE_TARGET" )
fi
cd "${XCODE_PROJECT_DIRECTORY}"
xcodebuild "${XCODE_W_P_ARG[@]}" -sdk "$XCODE_SDK" "${XCODE_CONFIG[@]}" - showBuildSettings > xcodebuild.properties.prep || die "Fail got parameters from  project parameter"