在bash脚本中传递标志失败

时间:2013-09-30 14:02:13

标签: linux bash shell makefile

我在bash中有一个构建脚本,它可以执行以下操作:

if [[ $DEBUG ]]; then
    MAKE_CMD="$MAKE_CMD $DEBUG_FLAGS"
fi

$ DEBUG_FLAGS初始化为:

DEBUG_FLAGS="GDB_FLAG='-g' OTHER_CFLAGS='-O0 -g'"

然后我只使用$ MAKE_CMD来编译代码。该脚本无需将DEBUG_FLAGS添加到原始make命令即可,但添加标志会导致问题。如果我使用相同的调试标志手动输入$ MAKE_CMD,它也可以工作。我唯一可以推断的是,我的报价错误导致了问题。你看我的报价有问题吗?

1 个答案:

答案 0 :(得分:1)

<强> make.sh

#!/bin/bash

MAKE_CMD="make -f bash.mak"
DEBUG_FLAGS="GDB_FLAG='-g' OTHER_CFLAGS='-O0 -g'"

if [[ $DEBUG ]]; then
  MAKE_CMD="$MAKE_CMD $DEBUG_FLAGS"
fi

eval $MAKE_CMD

bash.mak :(注意标签与空格!)

all:
        echo $(GDB_FLAG)
        echo $(OTHER_CFLAGS)

命令行示例:

$ DEBUG=true ./make.sh
echo -g
-g
echo -O0 -g
-O0 -g