美文网首页
通过echo看shell的单双引号 2022-08-11

通过echo看shell的单双引号 2022-08-11

作者: 9_SooHyun | 来源:发表于2022-08-11 11:05 被阅读0次

shell的 单双引号、反引号与反斜杠

  • 单引号:所见即所得
  • 双引号:所见非所得。会先把变量解析之后,再输出
  • 反引号(``) :命令替换,通常用于把命令输出结果传给入变量中
  • 反斜杠( \ ) :转义字符or逃脱字符,Linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号

bash脚本的手册里面有更完整的介绍

echo (-E)

按照上面介绍的shell规则,echo使用单引号可以原封不动输出任何字符
但需要注意,这时不能输出内部的单引号,
eg.

[root@VM-165-116-centos tmp]# echo 'my name is 'bob'\n'
my name is bob\n 

而我们的预期是输出

my name is 'bob'\n

这说明,echo的内容实际上是 'my name is '+bob+'\n',也就是echo认为的单引号对与我们预期的单引号对不一致,echo是就近原则

如果想用 echo 单引 输出内部的单引号,可以

1. 主动截断,把echo的原始内容分割成多部分

利用echo就近配对,我们可以主动截断来完成单引号的输出

[root@VM-165-116-centos tmp]# echo 'my name is '"'"'bob'"'"'\n'  
my name is 'bob'\n

echo的内容实际上是 'my name is '+"'"+'bob'+"'"+'\n'

2. 使用echo -e

-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)

echo 使用-e option可以对待输出内容进行反斜杠转义
于是我们可以使用\x27替换'

[root@VM-165-116-centos tmp]# echo -e 'my name is \x27bob\x27\n' 
my name is 'bob'

[root@VM-165-116-centos tmp]# 

单引号的输出符合预期,但是末尾\n被backslash escape了,没有正常输出
因此,echo 使用-e option 对于原始内容带有\的部分需要尤其小心是否会被转义

输出my name is 'bob'\n,需要

[root@VM-165-116-centos tmp]# echo -e 'my name is \x27bob\x27\\n' 
my name is 'bob'\n
[root@VM-165-116-centos tmp]# 

相关文章

  • 通过echo看shell的单双引号 2022-08-11

    shell的 单双引号、反引号与反斜杠 单引号:所见即所得 双引号:所见非所得。会先把变量解析之后,再输出 反引号...

  • zsh

    查看当前环境shell 查看系统自带哪些shell 安装zsh 将zsh设置为默认shell 可以通过echo $...

  • Shell环境变量

    echo $$ 显示当前 shell 的 PID echo $0 显示当前 shell 的名称 echo $SHE...

  • 构建GOCD Pipeline你应该知道的Shell脚本知识

    Shell基础 Shell脚本开始 function 获取参数 获取function 返回值。方法体内通过echo...

  • shell(四)

    Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。...

  • shell echo命令

    Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。...

  • echo 输出有没有加"双引号"差别还是挺大的

    2019-06-05 遇到的一点小问题最近使用shell开发一个简单的后台,经常遇到echo输出时因为双引号有没有...

  • echo命令简要说明

    echo简单来说,就是输出语句。echo 123 输出123 也可以加上双引号echo -n表示输出...

  • Shell 学习

    shell 变量 shell 参数传递 shell 数组 shell 运算符 shell echo 命令 prin...

  • 查看Shell

    可用shell查看cat /etc/shells 系统默认shell查看echo $SHELL

网友评论

      本文标题:通过echo看shell的单双引号 2022-08-11

      本文链接:https://www.haomeiwen.com/subject/xjwzwrtx.html