第一种方式:
echo | awk 'END{print var1,var2}' var1=1 var2=2
缺点:命令行参数的限制是他们在BEGIN过程中是不可用的,直到首行输入完成以后它们才可用。BEGIN是在首行输入前执行。如下:
echo | awk 'BEGIN{print n}' n=1 #打印不出来1
第二种方式:
echo | awk -v n=1 'BEGIN{print n}'
第三种方式:系统内置变量ARGV数组
echo | awk 'BEGIN{print ARGV[1]}' var1 var2
echo | awk 'BEGIN{print ARGV[2]}' var1 var2
#!/bin/bash
filename=$1
column_number=$2
#第四种方式
#awk "{ total += \$${column_number}}END{print total}" "$filename"
#awk -v N=$column_number "{total += \$N}END{print total}" "$filename"
#第五种方式
export column_number
awkscript='{ total += $ENVIRON["column_number"] }END { print total }'
awk "$awkscript" "$filename"
exit 0
应用中的技巧:
nimei(){
monthD="31 28 31 30 31 30 31 31 30 31 30 31"
echo "$monthD" | awk '{ print $'"${1}"' }'
}
month=4
days_in=$(nimei $month)
echo $days_in