• <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 閱讀(1226) 評論(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久久久久中文字幕| 久久久久亚洲精品日久生情 | 久久亚洲AV成人无码软件| 久久精品青青草原伊人| 国产精品99久久精品| 久久一区二区免费播放| 77777亚洲午夜久久多喷| 欧美久久久久久| 国内精品伊人久久久久网站| 亚洲综合日韩久久成人AV| 国内精品伊人久久久久影院对白 | 久久久国产精品| 色妞色综合久久夜夜| 免费一级做a爰片久久毛片潮| 色狠狠久久AV五月综合| 亚洲日本va午夜中文字幕久久 | 亚洲国产成人久久综合碰| aaa级精品久久久国产片| 国产成人无码精品久久久性色 | 九九久久自然熟的香蕉图片| 亚洲欧美日韩精品久久亚洲区| 国产精品久久久久一区二区三区| 狠狠精品久久久无码中文字幕| 久久91精品国产91久| 久久精品国产影库免费看| 无码精品久久一区二区三区| 久久美女人爽女人爽| 久久久免费观成人影院| 亚洲精品国产自在久久| 久久精品人人做人人妻人人玩 | 国产三级精品久久| 精品久久久久久国产| 99久久久久| 国产午夜精品理论片久久影视| 久久久久久久综合日本| 久久精品这里热有精品| 精品无码久久久久国产动漫3d| 久久精品成人欧美大片| 色综合久久88色综合天天|