各行でコマンドを実行したときに出力をリダイレクトするループファイル

各行でコマンドを実行したときに出力をリダイレクトするループファイル

私はLinuxでbashを学んでいます。 「ファイルから読みながらループ」のスクリプトを見つけて、以下のように修正しました。すべてのgitリポジトリを含むリストファイルを読み込もうとしており、すべてのgitリポジトリを繰り返してすべてgit status実行しようとしています。彼ら:

while read line; 
    do  echo $line;
        cd $line;
        git status;
done < repo.list

この部分はうまく機能し、標準出力で各リポジトリの状態を表示できますが、出力を別のファイルに書き込もうとすると機能しません。

while read line; 
    do  echo $line;
        cd $line;
        git status;
done < repo.list
> status.txt

git statusすべての出力を統合してファイルに書き込むにはどうすればよいですか?ありがとうございます!

ベストアンサー1

新しい行にリダイレクトするときは、空のコマンドとして機能してこの問題を解決してくださいdone

while IFS= read -r line; 
    do  echo "$line"
        (cd "$line"; git status)
done < repo.list > status.txt

また、見ることができますIFSについて学ぶそして「IFS=read-r-line」を理解する影響の微妙さに関する情報に関連する問題をリンクしますread

cdと一緒にサブシェルを使用するgit statusことは、ディレクトリを変更してもループの後続の反復やwhile

おすすめ記事