Chinaunix首页 | 论坛 | 博客
  • 博客访问: 216216
  • 博文数量: 76
  • 博客积分: 2231
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 09:15
文章分类

全部博文(76)

文章存档

2011年(76)

分类: LINUX

2011-11-26 08:46:44


Example 9-23 传递一个间接引用给awk
################################Start
Script#######################################
#!/bin/bash

# "column totaler"脚本的另一个版本
#+ 这个版本在目标文件中添加了一个特殊的列(数字的).
# 这个脚本使用了间接引用.

ARGS=2
E_WRONGARGS=65

if [ $# -ne "$ARGS" ] # 检查命令行参数是否是合适的个数.
then
echo "Usage: `basename $0` filename column-number"
exit $E_WRONGARGS
fi

filename=$1
column_number=$2

#===== 上边的这部分,与原来的脚本一样 =====#


# 一个多行的awk 脚本被调用,通过 ' ..... '


# awk 脚本开始.
# ------------------------------------------------
awk "

{ total += \$${column_number} # 间接引用.
}
END {
print total
}

" "$filename"
# ------------------------------------------------
# awk 脚本结束.

# 间接的变量引用避免了在一个内嵌的awk 脚本中引用
#+ 一个shell 变量的问题.
# Thanks, Stephane Chazelas.


exit 0
################################End
Script#########################################
注意: 这个脚本有些狡猾.如果第2 个变量修改了它的值,那么第一个变量必须被适当的解引用
(像上边的例子一样).幸运的是,在Bash 版本2 中引入的${!variable}(参见Example 34-2)
是的间接引用更加直观了.
注意: Bash 并不支持指针的算术运算,并且这严格的限制了间接引用的使用.事实上,在脚本语言
中,间接引用本来就是丑陋的部分.
阅读(1433) | 评论(0) | 转发(0) |
0

上一篇:eval3

下一篇:shell传参给awk

给主人留下些什么吧!~~