Código adequado
#!/bin/sh
if [ ! -f .md5sum ] || [ -f .md5sum ] && ! md5sum -c .md5sum > /dev/null
then
echo "All conditions have been met to generate a new md5sum for inventory.csv ..."
md5sum inventory.csv > .mds5sum
fi
Análise
[ ! -f .md5sum ]
[ -f .md5sum ]
Estes são comandos comuns de test , então POSIX-ly [...] , não há necessidade de colchetes duplos.
! md5sum -c .md5sum > /dev/null
Este não é um comando test , então não há colchetes ao redor dele.
Notas
-
Não é necessário usar
bash,shneste script. Eu só posso recomendar ficar com shell POSIX (sh), desde que você pode para fins de portabilidade. -
md5sumfoi substituído, por ex. comsha512sum. Nenhum algoritmo hash é perfeito, masmd5sumé conhecido por não ser resistente a colisões, especialmente. Só posso recomendar o uso desha512sum, desde que você não precise de hash extra curto. -
Leia mais sobre o comando de teste .
-
Opcionalmente, leia mais sobre POSIX .