Natural

           

          shell 注釋多行方法

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


          一、通過Here Documents和:實(shí)現(xiàn)
          1、最簡單方法
          :<<BLOCK
          注釋內(nèi)容
          BLOCK
                把輸入重定義到前面的命令,但是:是空命令,所以就相當(dāng)于注釋了。
                如果注釋中有反引號的命令就會報錯。反引號部分沒被注釋掉,例如ab=`ls -l abc`就不會被注釋掉。
          2、解決注釋中有反引號的問題
                在windows的cygwin環(huán)境中測試時報錯
          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í)行命令,但有時你不在乎條件是為真(或假)只在乎相反情況。
          command<<word
          any input
          file content
          word
                是Here Documents的用法,意思是將以上的定義符(word,也可以理解成本地文檔名)傳給某腳本或命令,word的內(nèi)容為兩個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中測試時報錯,要按照如下格式
          until :
          do
          注釋內(nèi)容
          done

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

          三、其它方法
          1、方法一
          : :||:<<\COMMENTS
          ....注釋內(nèi)容
          COMMENTS
            高手說上面這種方法最好,因?yàn)镠ere Documents部分不會執(zhí)行到,只會分析到,應(yīng)該不會對第二個:作實(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 此號已被刪 閱讀(2903) 評論(0)  編輯  收藏 所屬分類: Linux

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(8)

          隨筆分類(83)

          隨筆檔案(78)

          文章檔案(2)

          相冊

          收藏夾(7)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 靖州| 潼关县| 乌兰浩特市| 同江市| 内丘县| 嘉鱼县| 菏泽市| 南郑县| 鄂温| 永吉县| 东阿县| 吉首市| 永新县| 淄博市| 徐汇区| 永吉县| 巩留县| 墨脱县| 嘉禾县| 资源县| 绩溪县| 东乌| 天全县| 沾益县| 昌图县| 泰兴市| 靖边县| 平原县| 遵化市| 海阳市| 永平县| 四子王旗| 恩平市| 镇巴县| 客服| 法库县| 永安市| 利川市| 榕江县| 丰都县| 垫江县|