答案1
从man bash
:
将字符括在双引号中会保留引号内所有字符的文字值,但 $、`、 和启用历史记录扩展时的 ! 除外。
换句话说," ... "
不足以保护文本第 4 行的不平衡反引号;shell 将其解释为命令替换的开始。
另一方面,您不能使用单引号,因为您的文本包含单引号。
我建议完全避免引用的问题,使用这里的文件。您还应该使用 shebang 来确保您的文件被目标 shell 解释。所以:
#!/bin/sh
cat <<'TXT'
_ ____ __ _
_ __ (_)_ __/ ___|_ __ __ _ / _| |_
| '_ \| \ \/ / | | '__/ _` | |_| __|
| | | | |> <| |___| | | (_| | _| |_
|_| |_|_/_/\_\\____|_| \__,_|_| \__|
TXT
然后
$ ./mat.txt
_ ____ __ _
_ __ (_)_ __/ ___|_ __ __ _ / _| |_
| '_ \| \ \/ / | | '__/ _` | |_| __|
| | | | |> <| |___| | | (_| | _| |_
|_| |_|_/_/\_\\____|_| \__,_|_| \__|
答案2
你的问题中没有要求特定的翻译。因此,Python(允许使用三重引号(单引号''' ... '''
或双引号)将多行字符串分配给变量""" ... """
)可能是这样的选择:
#!/bin/python3
a = '''
_ ____ __ _
_ __ (_)_ __/ ___|_ __ __ _ / _| |_
| '_ \| \ \/ / | | '__/ _` | |_| __|
| | | | |> <| |___| | | (_| | _| |_
|_| |_|_/_/\_\\____|_| \__,_|_| \__|
'''
print(a)
执行如下:
$ ./mat.txt
_ ____ __ _
_ __ (_)_ __/ ___|_ __ __ _ / _| |_
| '_ \| \ \/ / | | '__/ _` | |_| __|
| | | | |> <| |___| | | (_| | _| |_
|_| |_|_/_/\_\____|_| \__,_|_| \__|