zoukankan      html  css  js  c++  java
  • shell中的单引号,双引号,反引号

      docker的父镜像中定义了一个环境变量,我们的镜像在启动命令中需要用到这个环境变量。但是不加双引号时总是报错,报找不到java的启动类,加上双引号就不报错了。

            父镜像中定义的变量:$xxx_CMD = -Xdump:tool:events=systhrow,opts=ASYNC,filter=java/lang/OutOfMemoryError,exec=sleep 120s && kill -9 %pid

            启动脚本为:java -server ... "$xxx_CMD" ...  xxx.jar

            我有用ps命令查看和对比对比$xxx_CMD和"$xxx_CMD"的启动的java参数,实际上并无差别,%pid也没有换成实际的进程编号。

            使用$xxx_CMD时,不是空格就是%导致java虚拟机报错。报找不到java的启动类,更多应该还是空格的问题。

    单引号

    所见即所得,即输出时会将单引号内的所有內容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,这称为强引用

    单引号中使用变量,单引号中再加单引号,'This is number '${A}''

    双引号 

    输出双引号内的所有内容;如果内容中有命令(要反引下)、变量、特殊转义符等,会先把变量、命令、转义字符解析出结果,然后再输出最终内容,推荐使用,这称为弱引用

    echo "`echo hello world`",结果是hello world  

    当需要使用字符($  `  "  )时必须进行转义,就是在前面加 

    无引号 赋值时,如果变量内容中有空格,则会造成赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体来输出;如果内容中有命令(要反引下)、变量等,则会先把变量、命令解析出结果,然后输出最终内容;如果字符串中带有空格等特殊字符,则有可能无法完整地输出,因此需要双引号替代无引号的情况,特别是对变量赋值时改加双引号
    反引号 一般用于引用命令,执行的时候命令会被执行,赋值和输出都要用“将命令引起来

            

  • 相关阅读:
    Translation Rule 和命中法则
    Cisco Extension Mobility配置步骤详解
    tclsh命令, cisco 快速测试工具
    136、多继承的优缺点,作为一个开发者怎么看待多继承
    135、 虚函数的内存结构,那菱形继承的虚函数内存结构呢
    134、隐式转换,如何消除隐式转换?
    133、说一下你理解的 ifdef endif代表着什么?
    132、 静态成员与普通成员的区别是什么?
    131、全局变量和static变量的区别
    130、定义和声明的区别
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/13127517.html
Copyright © 2011-2022 走看看