引用---单引号,双引号和反斜杠

双引号

会使文本以字符的形式展示,会过滤部分扩展,但是参数扩展,算数扩展和命令替换依然有效($,``,\)

单引号

抑制所有的扩展

反斜杠

转义字符,可以限制一些双引号中的扩展

实例1:

变量嵌套:可以通过抑制外层的扩展和eval命令实现

[portal@ccodtk test]$ cat test1.sh 
#!/bin/bash

set -xueo pipefail

a_config="{a1,a2}"

app1_config=\${${1}_config}
echo $app1_config

eval app_config=\${${1}_config}
echo $app_config
--------------------------
[portal@ccodtk test]$ bash test1.sh a
+ a_config='{a1,a2}'
+ app1_config='${a_config}'
+ echo '${a_config}'
${a_config}
+ eval 'app_config=${a_config}'
++ app_config='{a1,a2}'
+ echo '{a1,a2}'
{a1,a2}

分析:

  • 对于变量app1_config外层增加了转移字符后,以指了外层的扩展,从而实现了使app1_config的内容为一个变量形式的内容
  • 通过命令eval,是这个文本形式的变量内容得到bash的解析,从而展现出最后的内容

实例2:

单引号的抑制所有的转移,双引号不抑制参数扩展的转移

[root@qcteam-ciserver resources]# echo $USER
root
[root@qcteam-ciserver resources]# pwd
/home/docker/Cubes/dcmsSecurity/src/main/resources
[root@qcteam-ciserver resources]# ssh portal@10.130.25.80 'pwd; echo $USER'
/home/portal
portal
[root@qcteam-ciserver resources]# ssh portal@10.130.25.80 "pwd; echo $USER"
/home/portal
root
[root@qcteam-ciserver resources]# ssh portal@10.130.25.80 "pwd; echo \$USER"
/home/portal
portal

分析:

  • 通过前两步可看到当前环境的信息;
  • 第三步展示的是单引号的抑制扩展功能,将引号内的所有内容原原本本的传递过去;
  • 第四步展示了双引号的不一致参数扩展的功能,$USER在传递之前已经被解析为当前用户的值
  • 第五步展示了反斜杠在双引号中的抑制扩展功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值