运行命令时
cmake ../../ -DCMAKE_C_FLAGS="-DFOO -DBAR ${CMAKE_C_FLAGS}"
在bash中,它工作正常。
通过脚本时,它失败:
./myscript "-DFOO -DBAR"
cmake ../../ -DCMAKE_C_FLAGS="-DFOO -DBAR ${CMAKE_C_FLAGS}"
Parse error in command line argument: -DBAR
的MyScript:
#!/bin/bash
cmake_options='-DCMAKE_C_FLAGS="'$1' ${CMAKE_C_FLAGS}"'
echo "cmake ../../ "$cmake_options
cmake ../../ $cmake_options
我知道它必须与以某种方式逃避字符有关,所以我尽我所能(双/单引号,反引号,转义反斜杠,使用$()等),但我找不到修复...
我不是linux专家,有人可以帮帮我吗?
PS:我正在研究cygwin,但我也在普通的Linux上测试过,行为是一样的。
编辑:
@Assere如上所述,我已经尝试了很多东西,从$ 1改为“$ 1”并没有解决问题。我的意思是“bash”直接在命令提示符中,而我的意思是“sh”是“myscript.sh”文件。我确实有#!/ bin / bash,我只是不知道它被称为shebang。我也尝试引用$ cmake_options,没有结果。
请改用此脚本:
#!/bin/bash
cmake_options=-DCMAKE_C_FLAGS="\"$1 \${CMAKE_C_FLAGS}\""
echo "cmake ../../ "$cmake_options
cmake ../../ "$cmake_options"