2017-10-07 50 views
2

非常入門級的問題。Bash提取雙引號命令給參數

對於給定的工作腳本:

#!/bin/bash 
./configure $FLAGS --extra-cflags="-I$TOOLCHAIN_PREFIX/include $CFLAGS" 

是否可以提取部分"-I$TOOLCHAIN_PREFIX/include $CFLAGS"在參數?

E.g.除其他外,我試圖同時尋找匹配`「」這將失敗,並意外EOF如下:

#!/bin/bash 
EXTRACT="\"-I$TOOLCHAIN_PREFIX/include $CFLAGS\"" 
./configure $FLAGS --extra-cflags=$EXTRACT 
+0

不要混淆語法報價 - 這告訴shell如何將字符串解析爲語法元素 - 使用文字引號(它們是數據的一部分),它們完全是不同的東西,而文字引號不以任何方式用於語法目的(將額外的引號放入數據中在您的語法中替換缺少的引號) –

+1

(另外,'./configure $ FLAGS'只是「wor國王「,因爲它有一個寬鬆的定義 - 你可以在FLAGS中傳遞的一組可能的參數受到相當嚴格的限制。例如,'FLAGS =' - foo =「bar baz」'的效果與'./configure --foo =「bar baz」'效果相同。 –

+1

(另外,所有大寫名稱都用於具有OS或shell定義工具含義的變量,而名稱中至少包含一個小寫字母的變量僅供應用程序使用,因此,雖然'CFLAGS'被定義爲生活在保留空間中,如果'TOOLCHAIN_PREFIX'是你自己的構造,它應該至少有一個小寫字符;請參閱http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html,第四段)。 –

回答