Não está claro onde a saída do bash está indo

0

Eu fiz um script pequeno para mostrar a lista de remotos do plugin vim para um arquivo, para que eu pudesse descobrir o que eu gostaria de manter ou remover. No entanto, quando eu o executo, a saída não é canalizada para o arquivo. Tudo mais funciona como deveria. O que eu fiz de errado aqui?

#!/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
    
por Lee S 14.09.2015 / 16:56

2 respostas

2

cd "$D" || ...

é alterar o diretório OU fazer isso outra coisa, o que significa que se o cd for bem-sucedido (o que deveria), git não será executado.

cd "$D" && git ...

seria mais comum para o cd-and-do-this-thing. ( bash -x é útil para depurar esse tipo de coisa).

    
por 14.09.2015 / 16:59
1

Parece que você quer && , não || - || é uma lógica ou , git será executado somente se cd falhar.

Alterar:

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

para (embora o ponto-e-vírgula seja desnecessário):

cd "$D" && git remote -v >> "$HERE/vim-plug-remotes.txt";
    
por 14.09.2015 / 16:59