• <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;}'  這三部分為字符串連接關系

            久久亚洲熟女cc98cm| 国产精品美女久久久m| 久久精品综合网| 色婷婷久久综合中文久久蜜桃av | 久久国产亚洲精品无码| 精品无码久久久久国产| 久久精品国产国产精品四凭| 欧美久久久久久| 99久久国产综合精品麻豆| 久久人妻少妇嫩草AV蜜桃| 久久精品国产亚洲77777| 精品久久久久久99人妻| 久久AV高清无码| 久久综合久久美利坚合众国| 色综合久久综合网观看| 精品熟女少妇AV免费久久| 国产精品亚洲美女久久久| 久久精品国产亚洲AV影院| 久久精品国产亚洲av瑜伽| 99久久精品国产麻豆| 久久久久久久精品妇女99| 久久久久久无码国产精品中文字幕| 精品蜜臀久久久久99网站| 久久人人爽人人爽人人片AV高清 | 亚洲中文字幕伊人久久无码| 久久精品国内一区二区三区| 久久亚洲AV成人出白浆无码国产| 成人国内精品久久久久一区| 久久精品国产色蜜蜜麻豆| 国产L精品国产亚洲区久久| 久久精品国产亚洲AV大全| 亚洲精品乱码久久久久久按摩 | 久久人人爽人人爽人人爽| 亚洲精品tv久久久久久久久久| 日本精品久久久久影院日本| 91精品国产色综久久| 99久久精品这里只有精品| 色综合色天天久久婷婷基地| 亚洲国产成人久久精品影视 | 精品久久久久久久国产潘金莲 | 久久久WWW成人免费毛片|