ファイルの複数の値をパラメータとして渡す必要があります

ファイルの複数の値をパラメータとして渡す必要があります

ファイルには以下が含まれます。

Firstname=ABC
Lastname=XYZ
Country=USA

Firstname=DEF
Lastname=UVW
Country=UK

Firstnamelastnameおよびをスクリプトの関数にパラメータとして渡し、Country2番目のグループに対して同じ操作を繰り返す必要があります。

関数の使用法:そのうちの1つが欠落している場合は終了Country=し、3つのパラメーターすべてに値がある場合はコマンドを実行する必要があります。

ベストアンサー1

たぶんこのようなことを試してみることができますか?

awk 'BEGIN{RS="\n\n"}
     {
         split($1, a, "="); fname = a[2]; 
         split($2, b, "="); lname = b[2];
         split($3, c, "="); country = c[2];
         if (fname != "" && lname != "" && country != "") {
             command = "/path/to/your/script.sh "fname" "lname" "country;
             system(command);
         }
      }' input_file.txt

/path/to/your/script交換してみましたが、echoフィールドは正しい順序で表示されます。

特定の名前、姓、国の組み合わせのフィールドが欠落している場合、その特定の組み合わせに対してコマンドは実行されず、次の組み合わせに直接移動します。

awkコマンドが空のフィールドを検出したときにゼロ以外の戻りコードで終了し、次の組み合わせでコマンドを実行したくない場合は、次のようにします。

awk 'BEGIN{RS="\n\n"}
     {
         split($1, a, "="); fname = a[2]; 
         split($2, b, "="); lname = b[2];
         split($3, c, "="); country = c[2];
         if (fname != "" && lname != "" && country != "") {
             command = "/path/to/your/script.sh "fname" "lname" "country;
             system(command);
         } else {
             print "error: empty field in input file !";
             exit 1
         }
      }' input_file.txt

その後、シェル変数で戻りコードをテストできます$?。 0以外の場合、入力ファイルのどこかにフィールドがありません。

おすすめ記事