Mel*_*lab 19 bash quoting command-substitution
假设我必须使用引号来封装 subshell 输出,例如:
DATA="$(cat file.hex | xxd -r)"
Run Code Online (Sandbox Code Playgroud)
但我需要嵌套这样的东西:
DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"
Run Code Online (Sandbox Code Playgroud)
我不能使用单引号,因为它们不会扩展其中的变量。转义引号不起作用,因为它们只是被视为被动文本。
我该如何处理?
Mic*_*alH 24
您不需要对子shell 中的引号进行转义,因为当前shell不解释它们(实际上它不解释从$(to 的任何内容)),并且子shell不知道上面的任何引号。
在变量赋值时引用 subshell 也是不必要的,有关更多信息,请参见man bash。
您不需要转义内部的嵌套引号。他们得到了正确的解析,令人惊讶!
DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
Run Code Online (Sandbox Code Playgroud)