Eu tenho um if
no meu script bash que tem que verificar se existe um dos 2 arquivos, se eles não existem, deve ecoar.
Código que eu tenho:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Mas isso não parece funcionar por algum motivo.
Tenho 110% de certeza de que esses 2 arquivos não existem. Eu não recebo nenhum erro, ele simplesmente não entra no arquivo if
.
Eu sou novo no bash scripting, então não tenho certeza do que pode estar errado.
[[ -f xxx ]]
retorna true se xxx existir e for um arquivo regular (ou um link simbólico para um arquivo regular). Ele retornará false se não existir, ou se não puder dizer se existe ou se existe, mas não é um arquivo comum (diretório, canal, dispositivo, soquete ...) ou se é um link simbólico para um arquivo que não existe ou não pode dizer se existe ou não ou não é um arquivo normal ... [[ -e $file ]] || [[ -L $file ]]
está mais perto de um teste de existência. ls -d -- "$file" > /dev/null 2>&1
está ainda mais perto. E, como regra, esse tipo de teste leva a condições de corrida. Talvez haja outro caminho.
[[ ! -f /etc/.../... ]]; echo $?
para cada um.