Ich habe ein if
in meinem Bash-Skript, das überprüfen muss, ob JEDE der 2 Dateien vorhanden ist. Wenn sie nicht vorhanden sind, sollte es eine Echo-Übereinstimmung geben.
Code, den ich habe:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Aber das scheint aus irgendeinem Grund nicht zu funktionieren.
Ich bin zu 110% sicher, dass diese 2 Dateien nicht existieren. Ich bekomme keine Fehler, es geht einfach nicht in die if
.
Ich bin neu im Bash-Scripting, daher bin ich mir nicht sicher, was falsch sein könnte.
[[ -f xxx ]]
Gibt true zurück, wenn xxx vorhanden ist und eine reguläre Datei (oder ein Symlink zu einer regulären Datei) ist. Es wird false zurückgegeben, wenn es nicht existiert oder wenn es nicht erkennen kann, ob es existiert oder nicht oder ob es existiert, aber keine reguläre Datei (Verzeichnis, Pipe, Gerät, Socket ...) ist oder ob es sich um einen Symlink handelt zu einer Datei, die nicht existiert oder nicht erkennen kann, ob sie existiert oder nicht oder keine reguläre Datei ist ... [[ -e $file ]] || [[ -L $file ]]
ist näher an einem Test für die Existenz. ls -d -- "$file" > /dev/null 2>&1
ist noch näher. Und in der Regel führt diese Art von Test zu Rennbedingungen. Vielleicht gibt es einen anderen Weg.
[[ ! -f /etc/.../... ]]; echo $?
für jeden.