在shell脚本中剪切和导出命令

时间:2013-04-23 09:58:37

标签: linux shell unix

我正在处理一个包含以下代码的shell脚本。 我不明白这些行,主要是cut命令和export命令。谁能帮我... 另请指出一个更好的linux命令参考。 提前谢谢!

# determine sum of 60 records
awk '{ 
    if (substr($0,12,2) == "60" || substr($0,12,2) == "78") \
            print $0 
}'< /tmp/checks$$.1 > /tmp/checks$$.2

rec_sum =`cut -c 151-160 /tmp/checks$$.2 | /u/fourgen/cashnet/bin/sumit`

export rec_sum

在我的sumit脚本里面是代码

awk '{ total += $1}
END {print total}' $1

让我展示我的主要脚本prep_chk

awk 'BEGIN{OFS=""} {if (substr($0,12,2) == "60" && substr($0,151,1) == "-") \
        { print substr($0,1,11), "78", substr($0,14) } \
    else \
        { print $0 } \
    }' > /tmp/checks$$.1

# determine count of non-header record
rec_cnt=`wc -l /tmp/checks$$.1`
rec_cnt=`expr "$rec_cnt - 1"`
export rec_cnt

# determine sum of 60 records
awk '{ if (substr($0,12,2) == "60" || substr($0,12,2) == "78") \
    print $0 }'< /tmp/checks$$.1 > /tmp/checks$$.2
rec_sum=`cut -c 151-160 /tmp/checks$$.2 | /u/fourgen/cashnet/bin/sumit`
export rec_sum

# make a new header record and output it
head -1 /tmp/checks$$.1 | awk '{ printf("%s%011.11d%05.5d%s\n", \
    substr($0,1,45), rec_sum, rec_cnt, substr($0,62)) }' \
    rec_sum="$rec_sum" rec_cnt="$rec_cnt"

# output everything else sorted by tran code
grep -v "%%%%%%%%%%%" /tmp/checks$$.1 | cut -c 1-150 | sort -k 1.12,13

1 个答案:

答案 0 :(得分:2)

cut -c从文件中的给定位置剪切文本,在本例中为文件/tmp/checks$$.2中的字符151到160。此字符串通过管道传输到一些名为submit的代码,该代码会产生一些输出。 然后将该输出分配给环境变量rec_sumexport命令使此变量可用于通过系统,例如在另一个shell脚本中。

编辑: 如果这就是你提交脚本中的所有内容,它只是添加你传递它的字符串,它似乎必须是一个数字,总值并打印它传递的数字。似乎在该脚本中必须有更多的代码,否则它将是一个过于复杂的方式来做它。