我制作了一个小脚本来将 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";