最近在修改公司的一些cron,自己也是第一次接触和学习shell。对于一些零散但是常用的知识点,做一点点的总结。
拿出一个方法说说吧,方法如下:(信息量挺大的,请耐心看下面的说明)
trans_count_statistics() { str=$1 echo "str:$str" shift 1 for par in $@; do count_statistics=0 exec 3<$par while read -u3 line do echo $line |sed -n "s/^${str}//p" | read count_statistics let total_statistics+=count_statistics echo "count_statistics=$count_statistics" echo "total_statistics=$total_statistics" done done }
说明:
1)该方法的参数为:第一个参数为字符串;之后为一个或多个文件
2)该方法的作用是抓取并统计一个或多个文件中以指定字符串开头的行之后的数字全部相加后的值
3)在方法中使用$1, $2, $3……来获取第一,第二,第三……个参数
4)$@ 能获取到所有参数的列表,然后使用 for par in $@;就可以循环处理所有的参数
5)使用“shift n” 可以跳过前面n个参数,再使用for par in $@;时,就从第n+1个参数开始获取
6)使用exec 3<$par 将文件重定向到标识为3的文件描述符上
7)使用while read -u3 line 按行读取文件描述符为3的文件到line中
8)在sed的命令内容中使用变量,可以用双引号与$结合的形式:sed -n "s/^${str}//p" (有多种方法,我选择了其中的一种而已)
9)sed是文本编辑命令。sed -n "s/^${str}//p" 的作用是将以${str}开头的行的第一个${str}替换为空字符串,并输出。 -n与 p结合使用表示只输出发生替换的行。 s/是替换命令。^表示匹配以某某开头
10)let是数值计算命令,之后的变量计算不用再使用$标示。
这些东西很零碎,但都挺有用也挺好用的。记录下来以后能用到。