杂七杂八的先把自己的心得整理下
1.source的使用
① 执行文件
source ${filename}
② 标准入力
source <(echo "xxxxxxx")
注意点:
执行的命令中,必须干干净净,不能像写脚本那样带有注释
2. awk ‘$8==$8’ 与 tee
①awk 列自身相等
if [ ! -z $sex ] && [ ! "$sex" -eq "2" ];then
sexCmd='awk $8=='${sex}
else
sexCmd='awk $8==$8'
fi
② tee
if [ ! -z $sex ] && [ ! "$sex" -eq "2" ];then
sexCmd='awk $8=='${sex}
else
sexCmd='tee'
fi
动态拼接成执行命令
cat ${tbld}/KOKYAKU_MASTER |
${kokyakuidCmd} |
${sexCmd} |
${nenreiCmd} |
${nendaiCmd} |
${gurupuCmd}
经测试 : tee 比起 awk 相当相当的节省时间
在动态拼接中,最恶心的还是单引号,这玩意输入强引用,一定要控制好
一个笨办法 : 两个单引号在动态拼接中相当于一个单引号(和MSSQL的动态拼接一样)
上面的划掉了,因为在测试中,跟踪发现
sexCmd 变量赋值的时候是 :
+ sexCmd='awk $8==1'
动态拼接成执行语句的时候,自动变成了awk的合法执行方式
+ cat /BSK/TBL/KOKYAKU_MASTER
+ tee
+ awk '$8==1'
追加一个例子 单引号和双引号 动态拼接中使用
#集計レベル
sumlevel=$(readvalue -u sumlevel ${tmp}-paralist)
#key-group
case ${sumlevel} in
"1" )
selcolstr="selcol -c1,5 -c6,7 -c16,17"
;;
"2" )
selcolstr="selcol -c1,5 -c8,9 -c16,17"
;;
"3" )
selcolstr="selcol -c1,5 -c10,11 -c16,17"
;;
"4" )
selcolstr='awk {print$1,$2,$3,$4,$5,$10"@"$12,$11"@"$13,$16,$17}'
;;
"5" )
selcolstr='awk {print$1,$2,$3,$4,$5,$10"@"$12"@"$14,$11"@"$13"@"$15,$16,$17}'
;;
esac
+ 1 2 3 都是双引号
+ 4 5 都是单引号 print和$1之间无空格,紧挨着