linux中 动态shell的处理手法

杂七杂八的先把自己的心得整理下

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之间无空格,紧挨着



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值