|
蓝森林 http://www.lslnet.com 2006年6月26日 11:18
这段代码错在哪?shell中的awk编程。
仔细看了很长时间,也没有看出,错在哪里。:cry:
[code]
#打印指定期限的利息清单。
lsz_out()
{
qixian=$1 #获取变量(期限)
dir="/tmp/lsz_"$qixian".tmp" #生成临时文件
dbaccess bankstar -<<-End 2>/dev/null #导出指定期限的流水帐。
unload to $dir select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=$qixian;
END
sort -t "|" -k1n <$dir | awk 'BEGIN {
#对/tmp/lsz.tmp以“|”为间隔,第1列rq排序后,由awk处理
FS="|"
OFS="\t"
total=0
printf ("5211利息支出、2611应付利息分档次明细帐\n")
printf ("信用社名称:_________ 档次:_________ 打印日期:_________\n")
printf (" 日 期 | 所 号 |流水号| 帐 号 | 帐 户 名 |期限|业务种类| 利息金额 \n")
printf ("====================================================================================\n")
}
{
printf ("%10s|%-8s|%-6s|%19s|%-10s|%-4s|%-8s|%8.2f\n",$1,$2,$3,$4,$5,$6,$7,$8)
total=total+$8
}
END {
printf ("====================================================================================")
printf ("%60s%11.2f\n","总计:",total)
}'
rm $dir #删除临时文件
}
awk 'BEGIN {
split ("0#3#6#12#24#36#60", qx, "#")
} #将期限作为数组。
END {
for i in qx { lsz_out qx[i] } #打印数组中各档次的清单。
}'
[/code] |
这段代码错在哪?shell中的awk编程。
[code]awk 'BEGIN {
split ("0#3#6#12#24#36#60", qx, "#")
} #将期限作为数组。
END {
for i in qx { lsz_out qx[i] } #打印数组中各档次的清单。
}' [/code]
改为
[code]for i in 0 3 6 12 24 36 60;do lsz_out $i;done[/code][/code] |
这段代码错在哪?shell中的awk编程。
如何计算一个包含有数据记录的文件有多少行? |
这段代码错在哪?shell中的awk编程。
1.awk 'END{print NR}'
2. wc -l
3. sed '$='
..........太多方法以吧? |
这段代码错在哪?shell中的awk编程。
:cry:
[code]
lsz_out()
{
qq=$1
#获取变量(期限)
dir="/tmp/lsz_"$qq".tmp"
#生成临时文件
#导出指定期限的流水帐。
dbaccess bankstar -<<-End 2>/dev/null
unload to $dir select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=$qq;
END
pppage=45 #分页行数45
#对/tmp/lsz.tmp以“|”为间隔,第1列rq排序后,由awk处理
sort -t "|" -k1n <$dir | awk 'BEGIN {
FS="|"
OFS="\t"
total=0
print "5211利息支出、2611应付利息分档次明细帐\n"
print "信用社名称:_________ 档次:_________ 打印日期:_________\n"
print " 日 期 | 所 号 |流水号| 帐 号 | 帐 户 名 |期限|业务种类| 利息金额 \n"
print "===================================================================================="
}
{
printf ("%10s|%-8s|%-6s|%19s|%-10s|%-4s|%-8s|%8.2f\n",$1,$2,$3,$4,$5,$6,$7,$8)
total=total+$8
}
END {
print "===================================================================================="
printf ("%60s%11.2f\n","总计:",total)
}'
rm $dir #删除临时文件
}
for i in 0 3 6 12 24 36 60;do lsz_out $i;done #分档次打印。
[/code]
提示 36行语法错误。end of file unexpected. |
这段代码错在哪?shell中的awk编程。
-->
awk中应该不可以这么引用shell中定义的函数。
BTW:这句是什么意思? :oops:
--> |
这段代码错在哪?shell中的awk编程。
dbaccess bankstar -<<-End 2>/dev/null
unload to $dir select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=$qq;
END
这段代码是从数据库中导出需要的纪录。 |
这段代码错在哪?shell中的awk编程。
用sh -x ……的形式运行看看脚本执行的状况,贴出执行信息。
我怀疑是执行过程中的一些字符扩展破坏了一些quote符的完整性。
现在的信息确定不了:( |
这段代码错在哪?shell中的awk编程。
[code]
dbaccess bankstar -<<-End 2>/dev/null
unload to "/tmp/lsz_0.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=0;
unload to "/tmp/lsz_3.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=3;
unload to "/tmp/lsz_6.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=6;
unload to "/tmp/lsz_12.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=12;
unload to "/tmp/lsz_24.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=24;
unload to "/tmp/lsz_36.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=36;
unload to "/tmp/lsz_60.tmp" select rq,cxsh,lsh,zh,hm,qx,ywm,lx from lsz where lx>0 and qx=60;
END
[/code]
提示出错:
--> |
这段代码错在哪?shell中的awk编程。
| 这段代码错在哪?shell中的awk编程。
| |
|