2017-06-19 179 views
0

我試圖通過空間分隔的變量在雙引號作命令從慶典

cat test.sh 

test1="\"localvar1 localvar2\"" 

make -j8 SAN_TAR="$test1" 

但外殼傳遞make命令空間分隔字符串來執行它作爲

make -j8 'SAN_TAR="localvar1 localvar2"' #single quote between san_tar 

有沒有辦法在那裏我可以通過它像

make -j8 SAN_TAR="localvar1 localvar2" 

在此先感謝

+0

這有什麼錯'測試='localvar1 localvar2''和'使-j8 SAN_TAR =「$ test」'? – choroba

+0

我必須在雙引號內傳遞它。所以make應該讀爲make -j8 SAN_TAR =「localvar1 local var2」(雙引號也應該與localvars一起傳遞,以便make可以擴展在SAN_TAR中傳遞的空格分隔變量(內部雙引號) – sinha

+0

爲什麼你需要它在makefile中你想做什麼? – choroba

回答

0

不要在字符串中加引號。

test1="localvar1 localvar2" 
make -j8 SAN_TAR="$test1" 

圍繞$test1的引號將參數保留爲單個字符串。

如果SAN_TAR被在需要一個字符串的地方Makefile裏擴展,你可以把單引號吧:

test1="'localvar1 localvar2'" 
make -j8 SAN_TAR="$test1" 
+0

傳遞的參數,我必須保持它作爲單個字符串「localvar1 localvar2」必須傳遞像一個單一的str ING。基本上應該把雙引號內的SAN_TAR作爲「localvar localvar2」。 – sinha

+0

也許把單引號放在變量裏面是你需要的,看看更新。 – Barmar

+0

如果你顯示了你正在使用的實際值,以及如何在makefile中使用該變量,這將有所幫助。 – Barmar