Posted on 2010-04-12 19:10
Prayer 閱讀(1214)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Shell
假設(shè)當(dāng)前目錄下有a.log b.log二個(gè)文件,利用awk打印出其文件名,腳本如下:
#! /bin/bash
for file in *.log
do
awk 'BEGIN{var=" ' "$file" ' "}END{print var;}' "$file"
done
在這里最讓人混淆的是單引號(hào)和雙引號(hào)
我們可以利用bash -x test.sh來(lái)執(zhí)行腳本,其會(huì)將腳本中的shell變量展開,便于調(diào)試
’單引號(hào)中除(’)都為原本字符,沒(méi)有特殊意義
"雙引號(hào)中除(
$`")
都為原本字符,沒(méi)有特殊意義
因此,上述可以展開為:
第一次:
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
會(huì)報(bào)錯(cuò),因?yàn)閍wk中字符串要用雙引號(hào)括起來(lái)
將其分解成以下這樣,便于理解:
'BEGIN{var=" ' "$file" ' "}END{print var;}' 這三部分為字符串連接關(guān)系