シフトラインの印刷と処理[閉じる]

シフトラインの印刷と処理[閉じる]

次の例に示すように、いくつかのコマンドの出力としてファイルと行があります。

kk 
25
bb
34
cc
56
dd
67

私はこのようなbash出力が欲しい

echo "kk" #(line 1)

25#(行2)でいくつかのコマンドを実行します。

echo "bb"  #(line 3)

34#(4行目)でいくつかのコマンドを実行するなど...

ベストアンサー1

常に仮定同じコマンド(と呼ぶ)ファイルの偶数行の内容をmy_cmd実行したい場合は、次のスクリプトが機能するはずです。previous_output.txt

#!/bin/bash

LABEL=1

while read line
do
  if (( LABEL == 1 ))
  then
    echo "$line"
    LABEL=0
  else
    my_cmd "$line"
    LABEL=1
  fi
done < previous_output.txt

説明する:

  • 最初の行は、bashを使用して解釈することを確認することです。
  • 次に、「エコー」したい行に対して値が1のLABEL変数を定義します。
  • 次に、「一部のコマンドの出力」を含むファイルのすべての行を繰り返し、それを1行ずつ変数として読み込みますline
  • if変数はusingの内容をLABEL出力し、次の行を0に設定してコマンドパラメータとして表示します。1$lineechoLABEL
  • elsemy_cmdコンテンツを実行し、$line次の行を1に設定してラベルを付け直します。LABEL
  • この後の最後の文は、donebash に指定されたファイルから入力を取得するように指示します。

シェルプログラミングについてもっと知りたい場合は、以下を参照することをお勧めします。高度なバッシュスクリプトガイド

おすすめ記事