awk獲取Shell變量

編寫Shell腳本的時候,經常會遇到在腳本中使用awk去調用Shell環境中的變量的時候,下面簡單的說一下調用的方法。

一 "'$var'"

這種寫法大家無需改變用 '  括起awk程序的習慣,是老外常用的寫法.如:
var="test"
awk 'BEGIN{print "'$var'"}'  #三個單引號括起來

如果var中含空格,爲了shell不把空格作爲分格符,便應該如下使用:
var="this is a test"
awk 'BEGIN{print "'"$var"'"}'    (也就是在shell變量的兩邊加上一對雙引號即可)

二 export 變量,使用ENVIRON["var"]形式,  (ENVIRON爲awk中的內置環境變量數組)

如: 
var="this is a test";export $var
awk 'BEGIN{print ENVIRON["var"]}'

三 獲得普通外部變量

[chengmo@localhost ~]$ test='awk code'                            
[chengmo@localhost ~]$ echo | awk  '{print test}' test="$test"
awk code
[chengmo@localhost ~]$ echo | awk  test="$test" '{print test}' 
awk: cmd. line:1: fatal: cannot open file `{print test}' for reading (No such file or directory)

格式如:awk ‘{action}’  變量名=變量值   ,這樣傳入變量,可以在action中獲得值。 注意:變量名與值放到’{action}’後面。

[chengmo@localhost ~]$ echo | awk  'BEGIN{print test}' test="$test"         

這種變量在:BEGIN的action不能獲得。

四 BEGIN程序塊中變量

[chengmo@localhost ~]$ test='awk code'                                 
[chengmo@localhost ~]$ echo | awk -v test="$test" 'BEGIN{print test}'
awk code
[chengmo@localhost ~]$ echo | awk -v test="$test" '{print test}'     
awk code

格式如:awk –v 變量名=變量值 [–v 變量2=值2 …] 'BEGIN{action}’  注意:用-v 傳入變量可以在3中類型的action 中都可以獲得到,但順序在  action前面。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章