次の例に示すように、いくつかのコマンドの出力としてファイルと行があります。
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
$line
echo
LABEL
else
my_cmd
コンテンツを実行し、$line
次の行を1に設定してラベルを付け直します。LABEL
- この後の最後の文は、
done
bash に指定されたファイルから入力を取得するように指示します。
シェルプログラミングについてもっと知りたい場合は、以下を参照することをお勧めします。高度なバッシュスクリプトガイド。