事情的起因是因为在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后会生成的容器中查看一下,这里不在叙述结果,本人测试没有问题。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏