不清楚 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-and-do-this-thing 来说更为典型。 (bash -x对于调试此类事情很方便)。

答案2

这听起来像是你想要的&&,而不是||--||是符合逻辑的或者,仅在失败git时运行。cd

改变:

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

to(尽管分号是不必要的):

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

相关内容