私は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
。