2011-06-29 10 views
0

私は他の開発者のスクリプトを読んでいます。助けてくださいBash: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文字です。では、このスクリプトは正確に何をしていますか?言い換えれば

答えて

1

バックチックコマンド($(...)で囲まれたほうがよい)は、入力ファイルからの印刷ジョブ名とシーケンス番号で始まる行をグレープすることです'cut'コマンドは列273-276(4文字)を収集しています。この値の大文字のバージョン(typeset -u)は$DOC_RET_CODEに割り当てられています。テスト行は、ドキュメントの戻りコードがGOODであるかどうかをチェックし、もしあれば何か(図示せず)を行います。状況が良くない場合は何か他のものを行います。

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 

、これはtr a-z A-Zを避け、GOODに対する単純な比較を可能にするために、すべてのもの(grep|cutパイプの結果)大文字を作っています。

grepはファイル名$ {INPUT_FILE}に対して実行されています。

1

それ自体ではありません。引数${INPUT_FILE}が渡され、標準入力ではなくそのファイルが読み込まれます。 「catの無駄な使用」バージョンはcat ${INPUT_FILE} | grep ...となります。

以前の回答では、bashは互換性を取り除き、typesetを非難することに注意してください。 typesetは、ksh,bashおよびzshの間で大きく互換性があります。