• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            怎樣向awk中傳入shell變量值

            Posted on 2010-04-12 19:10 Prayer 閱讀(1220) 評論(0)  編輯 收藏 引用 所屬分類: Shell

            假設當前目錄下有a.log b.log二個文件,利用awk打印出其文件名,腳本如下:

            #! /bin/bash
            for file in *.log
            do
                    awk 'BEGIN{var=" ' "$file" ' "}END{print var;}' "$file"
            done

            在這里最讓人混淆的是單引號和雙引號


            我們可以利用bash -x test.sh來執行腳本,其會將腳本中的shell變量展開,便于調試

            ’單引號中除(’)都為原本字符,沒有特殊意義

            "雙引號中除( $`") 都為原本字符,沒有特殊意義

            因此,上述可以展開為:

            第一次:

            awk 'BEGIN{var="a.log"}END{print var;}‘ a.log

            第二次:

            awk 'BEGIN{var="b.log"}END{print var;}‘ b.log

            如果將其寫成 awk 'BEGIN{var=' "$file" '}END{print var;}' "$file",則展開為:

            第一次:

            awk 'BEGIN{var=a.log}END{print var;}‘ a.log

            第二次:

            awk 'BEGIN{var=b.log}END{print var;}‘ b.log

            會報錯,因為awk中字符串要用雙引號括起來


            將其分解成以下這樣,便于理解:

            'BEGIN{var=" '    "$file"     ' "}END{print var;}'  這三部分為字符串連接關系

            久久婷婷五月综合色奶水99啪| 久久一日本道色综合久久| 日本道色综合久久影院| 91精品国产高清久久久久久国产嫩草| 99久久免费国产精品| 欧美久久一级内射wwwwww.| 亚洲精品无码久久久久久| 久久九九有精品国产23百花影院| 亚洲一本综合久久| 久久精品国产99国产精品亚洲| 国产高潮国产高潮久久久| 久久一本综合| 久久香蕉一级毛片| 免费久久人人爽人人爽av| 国产精品伊人久久伊人电影 | 国产精品欧美久久久久天天影视| 久久免费大片| 2021久久国自产拍精品| 亚洲人成无码久久电影网站| 国产成人综合久久综合| 狠狠色综合网站久久久久久久高清 | 热99re久久国超精品首页| 午夜视频久久久久一区| 岛国搬运www久久| 97久久超碰国产精品旧版| 欧美伊人久久大香线蕉综合 | 精品亚洲综合久久中文字幕| 久久精品中文字幕大胸| 久久精品亚洲男人的天堂| 久久99热精品| 91秦先生久久久久久久| 国产亚洲婷婷香蕉久久精品| 无码人妻精品一区二区三区久久| 婷婷久久综合九色综合绿巨人| 国产午夜久久影院| 久久精品国产99国产精偷| 少妇高潮惨叫久久久久久| 99精品久久久久久久婷婷| 99精品国产综合久久久久五月天| 伊人久久综合无码成人网| 亚洲精品午夜国产VA久久成人|