質問: bashを使用して行ごとに1つの要素を配列に読み込みます (gitを使用して)ディレクトリ内のすべてのステージングされていないファイルの変更のbash配列を取得しようとしています。次のコードは、ディレクトリ内の変更されたすべてのファイルを出力するために機能します。git -c $dir/.. status --porcelain | grep "^.\w" | cut -c 4- これは印刷します"directory name/file b.txt" "file a.txt" 使ってみたarr1=($(git status --porcelain | grep "^.\w" | cut -c 4-)) しかしその後for a in "${arr1[@]}"; do echo "$a"; done (${arr1[@]}の前後に引用符がある場合とない場合の両方の出力"directory name/file b.txt" "file a.txt" 私も試しましたgit -c $dir/.. status --porcelain | grep "^.\w" | cut -c 4- | readarray arr2 しかしその後for a in "${arr2[@]}"; do echo "$a"; done (${arr2[@]}の前後に引用符がある場合とない場合の両方)は何も出力しません。 declare -a arr2を事前に使用しても、まったく何も起こりません。私の質問はこれです:これらの値を配列に読み込むにはどうすればよいですか? (これは私のargosプラグイン gitbar で使用されているので、必要に応じて、すべてのコードを確認できます)。
回答: readarrayにパイプで接続したときに、arr2配列を正しく設定するサブシェルを開始しましたが、終了しました。 readarrayへの入力としてプロセス置換を使用します。readarray -t arr2 < <(git ...)