使用反引号时,Bash会抱怨here-document中的语法错误

ein*_*ica 6 bash quoting cat backticks

我正在运行以下一段bash代码:

cat << END_TEXT
       _             _ 
      | |           | |
  __ _| |__   ___ __| |
 / _` | '_ \ / __/ _` |
| (_| | |_) | (_| (_| |
 \__,_|_.__/ \___\__,_|
END_TEXT
Run Code Online (Sandbox Code Playgroud)

并收到一个错误:

bash: command substitution: line 1: syntax error near unexpected token `|'
bash: command substitution: line 1: ` | '_ \ / __/ _'
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 7

无需逃避反击.只需使用引用的here-doc字符串:

cat <<-'END_TEXT'
        _             _
       | |           | |
   __ _| |__   ___ __| |
  / _` | '_ \ / __/ _` |
 | (_| | |_) | (_| (_| |
  \__,_|_.__/ \___\__,_|
END_TEXT
Run Code Online (Sandbox Code Playgroud)

按照man bash:

如果单词是无引号中,这里的文档的所有行进行参数扩展,命令替换和算术扩展,字符序列\<newline>被忽略,\ 必须使用来引用字符\,$`.

  • 比我更好的解决方案,真棒. (2认同)