Bash:需要帮助我的bash脚本 - 排版

时间:2011-06-29 18:58:38

标签: bash

我正在阅读其他一些开发人员脚本,并且遇到了一些我不太了解的内容。请帮忙

typeset -u DOC_RET_CODE=`grep ^${PRNT_JOB_NAME}${SEQ_NUM} ${INPUT_FILE} |cut -c273-276`
if [ "${DOC_RET_CODE}" = "GOOD" ]

我查找排版 - 你好像它生成只读变量,但不确定它在那里做什么。对于grep,我通常输入像ls | grep test这样的输入,但grep就像这样,我不太确定。我知道cut -c273-276,但是从位置273-276开出4个字符。那么这个脚本究竟做了什么?

3 个答案:

答案 0 :(得分:1)

> help typeset
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
    Set variable values and attributes.

    Obsolete.  See `help declare'.
> help declare
declare: declare [-aAfFgilrtux] [-p] [name[=value] ...]
    Set variable values and attributes.
    …
    Options which set attributes:
      -u        to convert NAMEs to upper case on assignment

换句话说,这使得所有内容(grep|cut管道的结果)大写以避免tr a-z A-Z并允许与GOOD进行简单比较。

对于您的其他问题,grep正在针对文件名$ {INPUT_FILE}运行。您可以按原样运行该命令(在手动替换变量之后)

答案 1 :(得分:1)

back-tick命令(最好包含在$(...)中)是对输入文件中打印作业名称和序列号开头的行进行grepping,然后'cut'命令收集列273-276(4个字符)。此值(typeset -u)的大写版本已分配给$DOC_RET_CODE。测试行检查文档返回代码是否为GOOD,如果是......则执行某些操作(未显示)...如果状态不佳,则可能执行其他操作。

答案 2 :(得分:1)

它不是单独的;它传递了参数${INPUT_FILE},它将读取该文件而不是其标准输入。 “无效使用cat”版本为cat ${INPUT_FILE} | grep ...

请注意,根据之前的回答,bash已决定放弃兼容性并弃用typesettypesetkshbashzsh之间基本兼容。