👋 欢迎来到吴老二技术博客,专注运维 / 数据库 / 云原生
首页/运维服务/正文

linux的命令之shell的单引号和双引号的区别

吴
吴老二
2021-08-17运维服务2532 次浏览0 条评论
事情的起因是因为在kubenets中给服务加pinpoint的时候需要获取容器的计算机名来作为pinpoint的ID,因为每个服务的pinpointID不能相同所以在使用的时候必须在docker启动之后在运行命令获取值赋值给变量。然后使用这个变量来启动服务,以达到pinpointID不同的目的。 单引号:所见即所得 双引号:所见非所得,它会先把变量解析之后,再输出 反引号(``) :命令替换,通常用于把命令输出结果传给入变量中 反斜杠( \ ) :转义字符/逃脱字符,Linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ wulaoer='hostname'
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ echo $wulaoer
hostname
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ wulaoer="hostname"
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ echo $wulaoer
hostname
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ wulaoer=`hostname`
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ echo $wulaoer
wulaoer.org
这里说明一下在dockerfile中wulaoer="hostname"就会在没有进入容器直接执行hostname命令,这里明显不是我想要的,我想要的是容器启动之后需要在容器中获取。看到单引号和双引号的说明,那我们可以在第一层的时候不执行命令,在第二层的时候在执行命令。即可得到我们想要的值,下面看一下我的dockerfile
pinpoint_id='`hostname | awk -F '-' '{print $(NF-1)}'`'
这个是我的pinpointID的变量,我执行dockerfile后会生成的容器中查看一下,这里不在叙述结果,本人测试没有问题。
文章底部广告位在后台「广告设置」填写广告代码后显示

评论 0

评论需 登录 后发表(注册并验证邮箱)。
还没有评论,来抢沙发~