zoukankan      html  css  js  c++  java
  • shell多行注释

     

    由于Shell不支持直接多行注释,总结了以下Shell注释多行的变通方法
      一、通过Here Documents和:实现
      1、最简单方法
     :<<BLOCK
      ....注释内容
        BLOCK
      把输入重定义到前面的命令,但是:是空命令,所以就相当于注释了。

      如果注释中有反引号的命令就会报错。反引号部分没被注释掉,例如ab=`ls -l abc`就不会被注释掉。

      2、解决注释中有反引号的问题

      A、方法一
      :<<BLOCK'
      ....注释内容
        'BLOCK
      B、方法二
      :<<'BLOCK
      ....注释内容
      BLOCK'
      C、方法三

      :<<'
        ....注释内容
        '
      以上三种方法都是通过在:<
      
      BLOCK为Here Documents中的定义符号可以随意起名,只要前后匹配就行了

      3、简单说说:指令和Here Documents

      :就是什么也不作(do nothing)即空命令。它的最基本作用就是在if,then条件中。在if语句中各部分必须接执行命令,但有时你不在乎条件是为真(或假)只在乎相反情况。

      例如如果检测存在某路径什么也不做,不存在就echo报错。可写为
      if [ -d $DIRECTORY ];
      then : #do nothing
      eles
      echo "the directory do not exit  "
      fi
      下面的例子
      command<<word
      any input
      file content
      word
      是Here Documents的用法,意思是将以上的定义符(word,也可以理解成本地文档名)传给某脚本或命令,word的内容为两个word间输入任意内容(word为Here Documents中的定义符号可以随意起名,只要前后匹配就行了),这样就可以在脚本中用command来执行输入而不必再重建一文件。

      常用在菜单屏幕中,例如:
      cat <<Menu
      1. List files
      2.HELP
      3.exit
      Menu
     
      :<<word
      ....注释内容
      word
      就类似于建一本地文件,然后对它执行空命令,也就是什么也不做,就相当于注释了。

      更详细的Here Document说明可参考http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/here-docs.html
      二、通过循环实现
      1、while和:实现
      while :
      do
      break
      注释内容
      done
      2、until和:实现
      until :
      注释内容
      done
      注意注释内容中是否含”done”,包含会造成意外结束循环
      三、其它方法
      1、方法一
      : :||:<<\COMMENTS
        ....注释内容
          COMMENTS
      
      高手说上面这种方法最好,因为Here Documents部分不会执行到,只会分析到,应该不会对第二个:作实际的IO重定向。

      2、方法二

      : << 'BLOCK'  可以将里面的变量扩展关闭掉。
      例如:
      kenny@x60:~> A=B
      kenny@x60:~> cat <<END
      > this is \$A: $A
      > END
      this is $A: B
      kenny@x60:~> cat <<'END'
      > this is \$A: $A
      > END
      this is \$A: $A
      3、方法三
      :||{
      ....注释内容
      }
      这种方法不用到Here Documents,不过这种方法要注意注释内容中的}

      4、方法四
      :<<\EOF
        ....注释内容
        EOF
      上面方法可关掉Here Documents中的扩展功能,在Here-Document中忽略ending marker前的任何字符

      实际上使用<<\EOF <<‘EOF’,甚至<<<\EOF在语法上面更加的简洁。不过这种方法同样要注意注释内容中的EOF


    http://hi.baidu.com/leecandy/blog/item/7077a52d709e312d1f3089d2.html
  • 相关阅读:
    TurtleBot3 安装OpenCR包
    TurtleBot3-树苺派SD卡备份镜像
    TurtleBot3-树莓派开启SSH服务
    ajax 接收json数据的进一步了解
    获取从天气预报接口返回回来的json数据
    创建一个学生表student,默认的表空间为users,字段自定,同时为表的各个字段分别添加合适的约束,然后测试约束的验证状态。
    org.apache.jasper.JasperException: Unable to compile class for JSP: Invalid character constant
    oracle 管理表空间
    !!!myeclipse 上加载本地图片问题,无法加载问题
    js 关闭页面(Scripts may close only the windows that were opened by it.)
  • 原文地址:https://www.cnblogs.com/catkins/p/5270820.html
Copyright © 2011-2022 走看看