シェルスクリプトで単語リストを複数の単語行として生成/解析

シェルスクリプトで単語リストを複数の単語行として生成/解析

同僚は、データファイルから個々の単語(ユーザー名)のリストを生成し、リストを繰り返し(forループで)、各単語に対して追加のコマンドを実行するシェルスクリプトの作成を支援するように依頼しました。このユーザー名。

スクリプトは期待どおりの出力を生成せず、いくつかのデバッグエコーステートメント(それぞれforループが処理するリストと現在の値を出力します)を置いた後、次のようになります(Becomeを使用するとこれは驚くべきことではないようです)。 1grep行の複数の単語文字列が必要な(?)ではなく、各単語が別々の行に分割された単一の単語の文字列です。for

(奇妙なことに、forループの後続の出力のいくつかは期待どおりに毎回「現在の」ユーザー名の値を使用しているようですが、他の部分は毎回リストの最初の値を使用しているようです(おそらくリストには実際には複数の値が含まれています)単一行ではなく複数行で構成されます。

リストは以下によって生成されます。

OQLIST=`grep "*" ${QCHECK_FILE} | gawk -F " " '{print $1}'`

forループの構文は次のとおりです。

for OQUSER in ${OQLIST}; do
    # various stuff
done

スクリプトが実行されています/bin/sh(実際にはbashそのシステムで)。私はいません。考えるbash欠陥がある可能性がありますが、実際に必要に応じて動作する場合は問題ありません。

希望の方法でリスト値をforループに入れる方法はありますか?それとも値を繰り返すより適切な方法がありますか?

ベストアンサー1

おすすめ記事