子shell中的嵌套引号

Mel*_*lab 19 bash quoting command-substitution

假设我必须使用引号来封装 subshel​​l 输出,例如:

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不知道上面的任何引号。

在变量赋值时引用 subshel​​l 也是不必要的,有关更多信息,请参见man bash

  • 为什么在变量赋值时引用子shell是不必要的? (2认同)

wis*_*cky 9

您不需要转义内部的嵌套引号。他们得到了正确的解析,令人惊讶!

DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
Run Code Online (Sandbox Code Playgroud)