Para copiar a entrada padrão para a saída padrão, use cat
, não echo
.
git ls-remote "$1" 'refs/heads/*' |
sed 's~.*/~~' |
if [ -z "$2" ]
then
cat
else
cat > "$2"
fi
Observe também o uso adequado de cotações e o posicionamento dos canais para que você possa evitar as barras invertidas. O uso de sed
é uma otimização muito pequena, mas eu também acho mais claro do que o duplo rev
em torno de um cut
(desde que você gere o regex). Você também pode usar awk -F/ '{ print $NF }'
(mas isso requer que você melhore Awk).
Você pode evitar o cat
fazendo isso;
${2+exec >"$2"}
git ls-remote "$1" | sed 's~.*/~~'
(A falha se você passar uma string vazia como o segundo argumento deve pelo menos ser mais explícito, se não necessariamente mais útil, do que com [ -z
, que falha em distinguir entre um valor não definido e um vazio.)