Eu uso o Ubuntu 16.04 com Bash e criei este arquivo sem extensão e sem pulseira /etc/cron.daily/cron_daily
:
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"
A razão pela qual faço isso é ser menos dependente de crontab
.
Gostaria de perguntar se a nomenclatura do arquivo é segura e se a sintaxe geral e as expansões variáveis estão corretas.
As variáveis drt
e rse
já foram exportadas depois que seu arquivo foi originado e pode ser usado.
Olhando para os outros scripts no mesmo local em uma máquina Ubuntu à qual tenho acesso, fica claro que esses scripts devem ser scripts de shell adequados. Eles devem ser executáveis e ter uma
#!
linha apontando para o interpretador correto.Como você espera que a variável
drt
esteja configurada para algo, você deve verificar se ela está realmente configurada e se está configurada para algo razoável. Por exemplo, if$drt
deve ser o nome do caminho de um diretório existente:Da mesma forma para
rse
:Isso seria feito no início do script.
Verificação de diretório
pushd
epopd
são destinados principalmente para 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 script, mas em geral.Em vez de alterar o diretório de trabalho, fazer algo e depois voltar, você pode usar
O
cd
acima está afetando apenas o( ... )
subshell.Neste script, pode ser suficiente com
assumindo que
$drt
é um caminho absoluto e que o comando simples$rse
pode ser executado corretamente, independentemente de onde foi iniciado (isso deixa o script em um diretório de trabalho modificado após aif
instrução). Consulte os outros scripts/etc/cron.daily/
para obter uma visão de como eles funcionam (a sugestão acima é como o/etc/cron.daily/dpkg
script faz isso, mas não possui mais comandos após suaif
instrução).O script se beneficiaria de recuar corretamente o corpo do -loop
for
eif
-statement.Com o código de exemplo original, pode ser feito assim:
A indentação pode ser feita com espaços ou tabulações (é uma questão de gosto).
Além disso, digitei incorretamente seus nomes de variáveis várias vezes enquanto escrevia isso. Ter nomes de variáveis descritivos é benéfico para você (em algumas semanas) e para qualquer outra pessoa que esteja tentando descobrir o que seu script deve fazer. Não há nenhum benefício em usar nomes curtos de variáveis em scripts, pois isso leva a um código obscuro. Além disso, estou preocupado 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 documentado no script.