Ho uno if
script nel mio bash che deve verificare se ESSO dei 2 file esiste, se non esistono dovrebbe corrispondere all'eco.
Codice che ho:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Ma questo non sembra funzionare per qualche motivo.
Sono sicuro al 110% che questi 2 file non esistono. Non ricevo errori, semplicemente non entra in if
.
Sono nuovo di bash scripting quindi non sono sicuro di cosa potrebbe essere sbagliato.
[[ -f xxx ]]
restituisce vero se xxx esiste ed è un file normale (o un collegamento simbolico a un file normale). Restituirà falso se non esiste, o se non può dire se esiste o no o se esiste ma non è un file normale (directory, pipe, dispositivo, socket ...) o se è un link simbolico a un file che non esiste o non può dire se esiste o no o non è un file normale ... [[ -e $file ]] || [[ -L $file ]]
è più vicino a un test per l'esistenza. ls -d -- "$file" > /dev/null 2>&1
è ancora più vicino. E di norma, questo tipo di test porta a condizioni di gara. Forse c'è un altro modo.
[[ ! -f /etc/.../... ]]; echo $?
per ciascuno.