テキストファイルでこれを行うと
grep FINAL *.msg
それは戻ってくる
FINAL COMPUTATIONS: Elapsed Time: 000:30:55.65; CPU Time: 000:30:26.53
FINAL COMPUTATIONS: Elapsed Time: 000:28:11.77; CPU Time: 000:27:41.36
今 for ループを実行すると
for line in `grep FINAL *.msg`
"$line"
"FINAL COMPUTATIONS: Elapsed Time: 000:30:55.65; CPU Time: 000:30:26.53"
1行として扱わないでください。
この問題をどのように解決できますか?
ベストアンサー1
DopeGhotiの言葉は絶対に正しいです。ここでより適切な内容があります。プロセス置換を使用してgrep出力から1行ずつ読み込みます(パターンは現在のディレクトリのすべての* .msgファイルに適用されます)。
i=0;
while read -r line; do
echo $((i++)) "$line";
done < <(grep "FINAL" ./*.msg)
Shellcheck警告なしのコードスニペット :)