単純なbashスクリプトを書いています。どのように特定の出力文字列を待ってからスクリプトを移動できますか?以下を試しましたが、機能しません
while [ "$(cat abcd.txt)" != "ocid1.vnic" ]; do cat abcd.txt ;done;
出力にはstartに上記の文字列が含まれており、これは一般的です。それは次のようになります
ocid1.vnic-fdhvndivfudsvu
ocid1.vnic.fjufghug
ocid1.vnic=dugjfjg
この状況で誰でも私を助けることができます:)
答え1
次の行を見つけて行が表示されるまで繰り返すには、シェルでこれを行うのではなく、次のようにしますocid1.vnic
。grep
while ! grep -qe '^ocid1.vnic' abcd.txt; do
sleep .1
printf .
done
条件付き check の逆方向終了状態でgrep
、一致項目が見つかったら真の値を返します。sleep
ファイルで忙しいループを避けるために追加しましたprintf
。
毎回ファイル全体を再読み込みするため、ファイルを切り捨てて書き直しても予想される行をキャプチャします。あなたの場合、これが起こっているかどうかはわかりませんが、ファイルが大きくない限り、新しいセクションを読むのに苦労する価値はありません。必要に応じてこれを行うtail -f abcd.txt
ことができます続行する前に、Bashスクリプトにステータスメッセージを待つようにしてください。。