如何使 shell 中的 echo 或 printf 忽略双反斜杠 (\\) 并按我看到的打印出来

How can I make echo or printf in shell ignore a double backslash (\\) and print it as I see it

我试图在我的 shell 脚本中输入一些 ascii 艺术字,我同时使用两个反斜杠 (\\) 我希望 echo 或 printf 将这两个反斜杠一起打印。我可以在 echo 或 printf 之后添加一些内容,让它们按字面意思打印双引号 (") 内的每个字符吗?

例如我想要:

echo -something "
     __      __  __      __
      \    //    \    //
       \  //      \  //
        \//        \//
"

打印

     __      __  __      __
      \    //    \    //
       \  //      \  //
        \//        \//

原来如此。

单引号是你的朋友;反斜杠只是单引号字符串中的一个普通字符。除了单引号本身之外的所有其他字符也是如此。

echo '
     __      __  __      __
      \    //    \    //
       \  //      \  //
        \//        \//
'

如果在单引号输出中需要单引号,则必须编写序列 '\'' 以获得单引号:

echo '"single quotes" ('\'') are harder than "backslashes" (\)'

我在其中加入了双引号和反斜杠,以便更难在字符串周围使用双引号。但是,您也可以这样写:

echo "\"single quotes\" (') are harder than \"backslashes\" (\)"