我尝试在 Makefile 中搜索和替换给定的字符串,即
PROCFLAGS="SQLCHECK=SEMANTICS USERID=$(CONNECT)"
Run Code Online (Sandbox Code Playgroud)
我想添加CODE=ANSI_C到行的地方
PROCFLAGS="SQLCHECK=SEMANTICS USERID=$(CONNECT) CODE=ANSI_C"
Run Code Online (Sandbox Code Playgroud)
Sed 应该很好地完成这个技巧.. 至少我是这么想的,但我无法理解我正在调用 sed 的语法错误:
sed -i'.bak' s:(CONNECT):(CONNECT) CODE=ANSI_C:g Makefile
Run Code Online (Sandbox Code Playgroud)
我试图添加-r或转义括号,\( \)但我总是以错误告终:
-bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
我只能想到我在这里必须做错的事情,因为许多其他替代品确实可以正常工作。
尝试引用括号中的项目。Bash 正试图在我认为的子 shell 中运行 (CONNECT)
sed -i'.bak' "s:(CONNECT):(CONNECT) CODE=ANSI_C:g" Makefile
Run Code Online (Sandbox Code Playgroud)
当你把一些东西放在括号里时,bash 会将它作为子shell 中的命令运行。
例如,尝试(cd /tmp; pwd); pwd。您将看到子shell print /tmp,但是第二个pwd会告诉您原始目录。