私が書いているスクリプトの一部は、同じ文字列のさまざまなテキストファイルをチェックする必要があります。私がちょうど1つのファイルをチェックしなければならなかったので、変数として定義されているものを検索するために、私は門式内の長い文字列リストを持っていました。複数のコマンドを 'if'文でパイプすることはできますか?
category_1=$(sudo zcat myfile | egrep -c 'Event 1|Event 2|Event 3')
category_2=$(sudo zcat myfile | egrep -c 'Event 4|Event 5|Event 6')
category_3=$(sudo zcat myfile | egrep -c 'Event 7|Event 8|Event 9')
...
echo Category 1
if [[ $category_1 -ge 2 ]];then
echo There were $category_1 events
elif [[ $category_1 -eq 1 ]]; then
echo There was $category_1 event
fi
は、などなど...
は今、私はgreppedを確認することができるようにそれを変更する必要があります。一致がある場合は、後のスクリプトでvariabledが呼ばれ、画面に出力します複数のテキストファイルに対する文字列私は無駄にはgrep変数とif文で変数やパイプ、それらを、新しいファイルを定義しようとしました:
category_1=$(egrep -c 'Event 1|Event 2|Event 3')
category_2=$(egrep -c 'Event 4|Event 5|Event 6')
category_3=$(egrep -c 'Event 7|Event 8|Event 9')
myfile=$(sudo zcat myfile)
myfile2=$(sudo zcat myfile2)
myfile3=$(sudo zcat myfile3)
...
echo Category 1 - Myfile
if [[ myfile | $category_1 -ge 2 ]];then
echo There were $category_1 events in myfile
elif [[ myfile | $category_1 -eq 1 ]]; then
echo There was $category_1 event in myfile
fi
それは私がif文でパイプコマンドをできないようです。
はそれが可能です'egrep'コマンドを変数として設定して、各コマンドに 'イベント1'などを入れる必要はありませんか? grepvariable1 = $ egrep -c 'イベント1 |イベント2 |イベント3'if [[$(sudo zcat myfile1 | grepvariable1)-ge 2]]; – Hxwk
@Hxwk:繰り返したいコードを含む関数を定義することができます。 – choroba
正しい方向に私を指摘してくれてありがとう、私は関数を調べる – Hxwk