Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使shell中的echo或printf忽略双反斜杠(\\)并按我看到的方式打印它_Linux_Shell_Printf_Ascii_Echo - Fatal编程技术网

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

Linux 如何使shell中的echo或printf忽略双反斜杠(\\)并按我看到的方式打印它,linux,shell,printf,ascii,echo,Linux,Shell,Printf,Ascii,Echo,我试图在我的shell脚本中输入一些ascii艺术字,我同时使用了两个反斜杠(\\),我希望echo或printf将这两个反斜杠打印在一起。有什么东西可以放在echo或printf后面,让它们直接打印双引号(“)中的每个字符吗 例如,我想要: echo -something " __ __ __ __ \\ // \\ // \\ // \\ // \\// \\// " 印

我试图在我的shell脚本中输入一些ascii艺术字,我同时使用了两个反斜杠(\\),我希望echo或printf将这两个反斜杠打印在一起。有什么东西可以放在echo或printf后面,让它们直接打印双引号(“)中的每个字符吗

例如,我想要:

echo -something "
     __      __  __      __
      \\    //    \\    //
       \\  //      \\  //
        \\//        \\//
"
印刷

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

正是这样。

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

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

echo '"single quotes" ('\'') are harder than "backslashes" (\)'
其中,我使用了双引号和反斜杠,使字符串更难使用双引号。但是,您也可以编写:

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

这在Mac OS X上不起作用。在Mac上你需要
printf%s'…'
@asmaier:什么在哪个版本的macOS上不起作用,你使用的是哪个shell?最后两个命令都产生
“单引号”(')比在我的Mac上使用Bash(刚刚用macOS Mojave 10.14.6测试过)产生的“反斜杠”(\)
更难。第一个版本也会产生我期望的输出。您是否可能使用macOS Catalina和
zsh
?我忘记了在大约4年半前写这篇文章时应用了哪个版本-但那时我也会使用Bash。我希望它能与任何兼容POSIX的shell(或或多或少兼容的shell)一起工作。它可能不适用于C外壳衍生产品(例如
tcsh
)。在您的第一个命令中,Mac上的echo不会返回双反斜杠,而是生成一个反斜杠。奇怪。在我的Mac上,我按照POSIX的要求获得了双反斜杠。您还没有确定您使用的是哪个版本的macOS,也没有确定使用的是哪个shell。在您像我一样确定这些版本之前,您的说法是没有根据的,并且是矛盾的从我在MacBook Pro.YMMV上看到的情况来看,我没有意识到使用任何奇怪的设置来修改Bash的行为。如果运行
shopt-s
xpg\u echo
是否显示为
on
?使用
zsh
(zsh 5.3(x86\u 64-apple-darwin18.0)在Mac上,我遇到了
echo
的问题。但是你是对的,使用
bash
时不会发生这种情况。