2013-09-30 101 views
0

我在bash構建腳本,做一些事情,如:傳旗在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

很多取決於你使用'$ MAKE_CMD'的方式,你沒有你的問題如何。另外,你只描述它是如何工作的,你永遠不會說它是如何工作的。你觀察到什麼錯誤或不正確的行爲? – MadScientist

+0

您已經提出了足夠的問題來了解[最小完整示例](http://sscce.org)是什麼。什麼「問題」?你究竟如何避免添加'DEBUG_FLAGS'?如果你沒有條件怎麼辦? 'MAKE_CMD'的價值是什麼?如果你在沒有額外步驟的情況下嘗試這個命令會怎樣? – Beta

+0

嵌入式引號按照字面意思處理。當你運行'MAKE_CMD'時,'DEBUG_FLAGS'包含3個字:'GDB_FLAG =' - g'','OTHER_CFLAGS =' - O0'和'-g''。如果你發佈了一些關於你想要做什麼以及你做什麼的背景的更多細節,有人可能會提出一些有用的建議。 – chepner

回答

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:(!介意製表符VS空格)

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

命令行例子:

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