我的函数接收变量作为参数,例如:
function do()
{
eval "TEST=$1"
}
现在我想在同一个函数中解析一些数据:
function do()
{
eval "TEST=$1"
tail -n+3 file.txt | awk '$1 ~ "[0-9]$" {print "/dev/"$1}'
}
问题是awk冲突了自己的字段分隔符" $ 1"将参数传递给函数。
有没有办法解决它而不使用全局变量作为参数?
答案 0 :(得分:4)
使用-v
选项声明一个包含函数参数值的awk
变量。
function do()
{
TEST=$1
tail -n+3 file.txt | awk -v test="$TEST" '$1 ~ /[0-9]$/ {print "/dev/"test}'
}