Bash 출력이 어디로 가는지 잘 모르겠습니다.

Bash 출력이 어디로 가는지 잘 모르겠습니다.

vim 플러그인 원격 목록을 파일로 출력하는 작은 스크립트를 만들어 어떤 항목을 유지하거나 삭제하고 싶은지 파악할 수 있었습니다. 그러나 실행하면 출력이 파일로 파이프되지 않습니다. 다른 모든 것은 정상적으로 작동합니다. 내가 여기서 뭘 잘못하고 있는 걸까?

#!/usr/bin/env bash
HERE=$(pwd)
for D in $HOME/.vim/plugged/*/; do
    if [ -d "${D}" ]; then
        cd "$D" || git remote -v >> "$HERE/vim-plug-remotes.txt";
    fi;
done
cd "$HERE" || exit

답변1

cd "$D" || ...

디렉토리를 변경하거나 다른 작업을 수행하는 것입니다. 즉, cd성공하면(반드시 그래야 함) git실행되지 않습니다.

cd "$D" && git ...

CD를 들고 이런 일을 하는 것이 더 일반적입니다. ( bash -x이런 종류의 디버깅에 편리합니다).

답변2

- &&대신에 당신이 원하는 것이 논리적인 것처럼 들립니다.||||또는, git실패 시에만 실행됩니다.cd

변화:

cd "$D" || git remote -v >> "$HERE/vim-plug-remotes.txt";

(세미콜론은 불필요하지만):

cd "$D" && git remote -v >> "$HERE/vim-plug-remotes.txt";

관련 정보