您的位置:首页 > 运维架构 > Shell

SHELL : 将shell变量传递给awk

2014-01-03 09:05 459 查看
bit_rshift() {

refer_value=$1

offset=$2

result=`echo $refer_value | awk -v bits=$offset '{print rshift($0,bits)}'`

echo $result

}

http://www.cppblog.com/prayer/archive/2010/08/26/124860.html

2、3没有成功

1.利用shell cmdline的特性
A=123
awk '/^'"$A"'/ { print $2 }'

上面的cmdline中,shell把'/^'"$A"'/ { print $2 }'作为awk的第一个参数,这个'/^'"$A"'/ { print $2 }'可以分为3小块
(1)'/^':因为/^被单引号引起来,所以shell传这个小部分给awk时候,传的是:/^
(2)"$A":因为$A是被双引号引起,所以shell传这个小部分给awk时候,先把$A,做给“变量替换”,所以传的是:123
(3)'/ { print $2 }':因为/ { print $2 }被单引起来,所以传的是:/ { print $2 }

这3个小部分做为一个参数传给awk,合计3个小部分,那么传的就是
/^123/ { print $2 }

2.使用-v参数
A=123
awk -v B="$A" '/^B/ { print $2 }'

3.pass variable settings into awk as "fake file names"
awk '/^B/ { print $2 }' B="$A"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: