使用带有反斜杠(\)

2021-02-01 21:28

I的echo-e时,我正在Unix中阅读有关echo命令的信息,并且我在-e选项中对反斜杠(\)转义字符感到困惑,我运行了以下两个示例:echoquot;output:hello\\world现

解答动态

  • 在Bash双引号字符串中,可以使用反斜杠确保将下一个字符视为文本。也就是说,键入参数quot;会将文字字符串a\b传递给命令。由此我们可以得出结论,在这两种情况下,您都将hello\\world作为最终参数传递给echo在这两种情况下,每对反斜杠在传递给echo之前都会扩展为一个文本反斜杠。
    -e标志用于echo“启用对以下反斜杠转义的解释”(有关详细信息,请参阅help echo)。\\作为单个反斜杠的转义序列列出,因此在本例中,echo与Bash对原始字符串所做的操作相同,并将两个反斜杠减少为一个。-e标志主要用于包含转义序列,例如\t表示水平制表符或\n表示换行符。为了示例:
    $echo-e'first\tsecond\tthird'first second third I建议使用printf。首先,它使用格式字符串意味着我们可以安全地将用户提供的字符串与转义混合使用序列:
    $printf“%s\t%s\t%s\n”“inject\nescape”“\\”“\evil”“inject\nescape\\\ evi 秒,不是所有版本的echo都支持-e,不小心使用无引号的变量会让人改变echo的行为:
    $injection='-ea\nb'$echo$injectionab Third:这个博士论文级别的analysis.
    作为旁注,Bash不把单引号字符串中的反斜杠当作转义字符,这就是为什么我们得到以下结果结果:
    $echo'你好\\\\world'你好\\\\world$echo-e'你好\\\\world'你好\\\\world

    • End

    免责声明:

    本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。