2013-04-23 58 views
-3

我正在研究一个包含下面一段代码的shell脚本。 我不明白这些行,主要是剪切命令和导出命令。任何人都可以帮助我... 也请指点我一个更好的Linux命令参考。 在此先感谢!在shell脚本中剪切并导出命令

# 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 
+0

比较好些么?你读过手册页了吗?例如'男人切'? – Matteo 2013-04-23 10:04:29

+0

我不是Linux用户,我不知道这是一个手册页!另外我不执行这些脚本。我只是用PHP重写它。 – 2013-04-23 10:06:18

+0

Google for'man cut'或在shell中输入 – Matteo 2013-04-23 10:08:43

回答

2

cut -c削减文本文件,在这种情况下,文件/tmp/checks$$.2中的字符151至160。这个字符串被传送给一些叫做submit的代码,它产生一些输出。 然后将该输出分配给环境变量rec_sumexport命令使该变量可用于整个系统,例如在另一个shell脚本中。

编辑: 如果这就是您在提交脚本中的所有内容,它只是简单地将您传递给它的字符串添加到一些值中,并打印它传递的数字。看起来这个脚本里面必须有更多的代码,否则它会是一个非常复杂的方式。

+0

请看我的主要脚本prep_chk – 2013-04-23 11:09:45

+0

我想我已经给你一个体面的帮助,在这里解释“你的”脚本的各个部分。如果我是你,我会找到一个关于awk的在线教程。它看起来非常复杂和棘手,但是一旦你掌握了它,它就非常强大。此外,你总是有写得很好的手册页,而其他任何东西都有谷歌。如果您在终端中使用脚本中的单个命令进行播放。 – James 2013-04-23 11:19:59