2013-10-30 109 views
0

我正在構建一些源代碼,其中包含兩個遺留部分 - 一個基於bat/cmd文件的窗口,另一個基於類似unix的構建系統,與autools,makefiles等 因此,爲了防止大規模重寫構建系統,cygwin bash從bat文件中調用。我需要在構建腳本中使用源變量(LEGACY_SOURCE *)。但如果我用雙引號設置LEGACY_SOURCE_CYG,bash無法將其作爲參數處理。將雙引號字符串的環境變量轉換爲單引號

的build.bat:

set LEGACY_SOURCE="c:\some\path" 
set LEGACY_SOURCE_CYG='c:\some\path' 
rem ----------------------------------------------- 
rem Building library, using Makefile 
rem ----------------------------------------------- 
bash -c "export LEGACY_SOURCE_CYG=%LEGACY_SOURCE_CYG%; export PATH_WATCOM=%PATH_WATCOM%; export PATH_JWASM=%PATH_JWASM%; exec build/buildlib.sh" 

buildlib.sh

#!/bin/sh 
echo "Building USB library..." 
SRC=$(echo -E "${LEGACY_SOURCE_CYG}" | sed -e 's/^\(.\{1\}\)/\L\1/' -e 's,:,,' -e 's,\\,/,g') 
SRC="/cygdrive/${SRC}" 

所以問題是如何消除雙引號相同的路徑,與普通行情的重複。

回答

1
set LEGACY_SOURCE="c:\some\path" 
set "LEGACY_SOURCE_CYG=%LEGACY_SOURCE:"='%" 
+0

謝謝!這工作得很好 –

相關問題