我正在阅读其他一些开发人员脚本,并且遇到了一些我不太了解的内容。请帮忙
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个字符。那么这个脚本究竟做了什么?
答案 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
已决定放弃兼容性并弃用typeset
。 typeset
在ksh
,bash
和zsh
之间基本兼容。