Natural

           

          shell 注釋多行方法

          由于Shell不支持直接多行注釋,總結(jié)了以下Shell注釋多行的變通方法


          一、通過Here Documents和:實(shí)現(xiàn)
          1、最簡單方法
          :<<BLOCK
          注釋內(nèi)容
          BLOCK
                把輸入重定義到前面的命令,但是:是空命令,所以就相當(dāng)于注釋了。
                如果注釋中有反引號的命令就會(huì)報(bào)錯(cuò)。反引號部分沒被注釋掉,例如ab=`ls -l abc`就不會(huì)被注釋掉。
          2、解決注釋中有反引號的問題
                在windows的cygwin環(huán)境中測試時(shí)報(bào)錯(cuò)
          A、方法一
          :<<BLOCK'
          注釋內(nèi)容
          'BLOCK
          B、方法二
          :<<BLOCK'
          注釋內(nèi)容
          'BLOCK
          C、方法三
          :<<'
          注釋內(nèi)容
          '
                以上三種方法都是通過在:<
                BLOCK為Here Documents中的定義符號可以隨意起名,只要前后匹配就行了
          3、簡單說說:指令和Here Documents
                :就是什么也不作(do nothing)即空命令。它的最基本作用就是在if,then條件中。在if語句中各部分必須接執(zhí)行命令,但有時(shí)你不在乎條件是為真(或假)只在乎相反情況。
          command<<word
          any input
          file content
          word
                是Here Documents的用法,意思是將以上的定義符(word,也可以理解成本地文檔名)傳給某腳本或命令,word的內(nèi)容為兩個(gè)word間輸入任意內(nèi)容(word為Here Documents中的定義符號可以隨意起名,只要前后匹配就行了),這樣就可以在腳本中用command來執(zhí)行輸入而不必再重建一文件。
            常用在菜單屏幕中,例如:
          cat <<Menu
            1. List files
            2.HELP
            3.exit
          Menu
           
          :<<word
          ....注釋內(nèi)容
          word
                就類似于建一本地文件,然后對它執(zhí)行空命令,也就是什么也不做,就相當(dāng)于注釋了。
            更詳細(xì)的Here Document說明可參考http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/here-docs.html


          二、通過循環(huán)實(shí)現(xiàn)
          1、while和:實(shí)現(xiàn)
          while : 
          do 
          break
          注釋內(nèi)容
          done
           
          2、until和:實(shí)現(xiàn)
          until :
          注釋內(nèi)容
          done
          cygwin中測試時(shí)報(bào)錯(cuò),要按照如下格式
          until :
          do
          注釋內(nèi)容
          done

          3、if和:實(shí)現(xiàn)
          if [ 1 -eq 2 ]
          then
          注釋內(nèi)容
          fi
           
                注意注釋內(nèi)容中是否含”done/fi”,包含會(huì)造成意外結(jié)束

          三、其它方法
          1、方法一
          : :||:<<\COMMENTS
          ....注釋內(nèi)容
          COMMENTS
            高手說上面這種方法最好,因?yàn)镠ere Documents部分不會(huì)執(zhí)行到,只會(huì)分析到,應(yīng)該不會(huì)對第二個(gè):作實(shí)際的IO重定向。
          2、方法二
          : << 'BLOCK'
          ....注釋內(nèi)容
          BLOCK
            可以將里面的變量擴(kuò)展關(guān)閉掉。
          3、方法三
          :||{
          ....注釋內(nèi)容
          }
            這種方法不用到Here Documents,不過這種方法要注意注釋內(nèi)容中的}
          4、方法四
          :<<\EOF
          ....注釋內(nèi)容
          EOF
            上面方法可關(guān)掉Here Documents中的擴(kuò)展功能,在Here-Document中忽略ending marker前的任何字符
            實(shí)際上使用<<\EOF <<'EOF',甚至<<<\eof在語法上面更加的簡潔。不過這種方法同樣要注意注釋內(nèi)容中的eof< p=""> <<\eof在語法上面更加的簡潔。不過這種方法同樣要注意注釋內(nèi)容中的eof<>

          四、參考資料
            http://bbs.chinaunix.net/viewthread.php?tid=1152658&extra=&page=1
            http://blog.csdn.net/magicpang/archive/2009/04/14/4072878.aspx
            http://bbs.chinaunix.net/viewthread.php?tid=1196678&extra=&page=1





          posted on 2012-03-09 17:36 此號已被刪 閱讀(2896) 評論(0)  編輯  收藏 所屬分類: Linux

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(8)

          隨筆分類(83)

          隨筆檔案(78)

          文章檔案(2)

          相冊

          收藏夾(7)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 武鸣县| 黄山市| 滨海县| 永和县| 阳东县| 沙坪坝区| 武冈市| 登封市| 聊城市| 西乌珠穆沁旗| 浮梁县| 汪清县| 阿巴嘎旗| 白水县| 安丘市| 宝坻区| 望城县| 盱眙县| 布拖县| 故城县| 山东省| 台湾省| 苏尼特右旗| 房山区| 石台县| 香格里拉县| 天台县| 平邑县| 邹城市| 新丰县| 金昌市| 白水县| 云南省| 临泽县| 西乌| 墨竹工卡县| 固阳县| 延庆县| 广汉市| 利辛县| 镇雄县|