O operador > file
abre o file
para gravação, mas o trunca inicialmente. Isso significa que cada novo > file
faz com que o conteúdo do arquivo seja substituído.
Se você quiser que o myErrors.txt
contenha o erro de todos os comandos, será necessário abrir o arquivo apenas uma vez ou usar >
na primeira vez e >>
nas outras vezes (que abre o arquivo no modo append ).
Aqui, se você não se importar com os erros pushd
/ popd
para também ir para o arquivo de log, é possível redirecionar todo o for
loop:
for dir in public_html/*/; do
if pushd "$dir"; then
wp plugin update --all
wp core update
wp language core update
wp theme update --all
popd
fi
done 2>myErrors.txt
Ou você poderia abrir o arquivo de log em um fd acima de 2, 3 por exemplo, e usar 2>&3
(ou 2>&3 3>&-
para não poluir comandos com fds que eles não precisam) para cada comando ou grupo de comandos que você deseja redirecionar para o arquivo de log:
for dir in public_html/*/; do
if pushd "$dir"; then
{
wp plugin update --all
wp core update
wp language core update
wp theme update --all
} 2>&3 3>&-
popd
fi
done 3>myErrors.txt