Olhando para os outros scripts no mesmo local em uma máquina Ubuntu a que tenho acesso, é claro que esses scripts devem ser scripts de shell apropriados. Eles devem ser executáveis e ter uma #!
-line apontando para o interpretador correto.
Como você espera que a variável drt
esteja definida como algo, você deve verificar se ela está definida e configurada como algo razoável. Por exemplo, se $drt
for o nome do caminho de um diretório existente:
if [ ! -d "$drt" ]; then
echo 'drt is unset or does not contain path to directory' >&2
exit 1
fi
Da mesma forma para rse
:
if [ -z "$rse" ]; then
echo 'rse is unset' >&2
exit 1
fi
Isso seria feito no início do script.
Dir checking
pushd
e popd
são principalmente destinados ao uso interativo (isso pode ser discutido). Além disso, é difícil ler e manter um script que altere os diretórios para frente e para trás. Talvez não neste roteiro, mas em geral.
Em vez de alterar o diretório de trabalho, fazer algo e depois voltar, você pode usar
( cd "some directory" && "some other command" )
O cd
acima está afetando apenas a subcamada ( ... )
.
Neste script, pode ser o suficiente com
if cd "$dir"; then
command1
command2
# etc.
fi
assumindo que $drt
é um caminho absoluto e que o comando simples $rse
é capaz de ser executado corretamente, independentemente de onde foi iniciado (isso deixa o script em um diretório de trabalho modificado após a if
-statement) . Veja os outros scripts em /etc/cron.daily/
para obter uma visão de como eles funcionam (a sugestão acima é como o script /etc/cron.daily/dpkg
faz isso, mas ele não tem mais comandos após sua if
-statement).
O script se beneficiaria de recuar corretamente o corpo do for
-loop e if
-statement.
Com o código de exemplo original, pode ser feito assim:
#!/bin/bash
for dir in "$drt"/*/; do
if pushd "$dir"; then
wp plugin update --all --allow-root
wp core update --allow-root
wp language core update --allow-root
wp theme update --all --allow-root
popd
fi
done
"$rse"
O recuo pode ser feito com espaços ou tabulações (é uma questão de gosto).
Além disso, eu digitei incorretamente os nomes das variáveis várias vezes enquanto escrevia isso. Ter nomes de variáveis descritivas é benéfico para ambos (em algumas semanas) e para qualquer outra pessoa que esteja tentando descobrir o que seu script deveria estar fazendo. Não há benefício em usar nomes de variáveis curtas em scripts, pois isso leva a códigos obscuros. Além disso, estou desconfortável com o fato de que essas variáveis são definidas em outro lugar, pois implica uma dependência de algo que não é conhecido e não está documentado no script.