将环境变量从双引号字符串转换为单引号

时间:2013-10-30 09:44:15

标签: bash batch-file

我正在构建一些源代码,它们有两个遗留部分 - 一个类似于Windows,基于一堆bat / cmd文件,另一个基于类似unix的构建系统,带有autools,makefile等。 因此,为了防止大量重写构建系统,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 个答案:

答案 0 :(得分:1)

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