Mam if
w swoim skrypcie bash, który musi sprawdzić, czy JESZCZE z 2 plików istnieje, jeśli nie istnieją, powinien pasować do echa.
Kod mam:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Ale to z jakiegoś powodu nie działa.
Jestem 110% pewien, że te 2 pliki nie istnieją. Nie otrzymuję żadnych błędów, po prostu nie wchodzi if
.
Jestem nowym użytkownikiem skryptów bash, więc nie jestem pewien, co może być nie tak.
[[ -f xxx ]]
zwraca true, jeśli xxx istnieje i jest zwykłym plikiem (lub dowiązaniem symbolicznym do zwykłego pliku). Zwróci false, jeśli nie istnieje lub nie może stwierdzić, czy istnieje, czy też nie, ale nie jest zwykłym plikiem (katalog, potok, urządzenie, gniazdo ...) lub jeśli jest dowiązaniem symbolicznym do pliku, który nie istnieje lub nie może stwierdzić, czy istnieje, czy nie jest zwykłym plikiem ... [[ -e $file ]] || [[ -L $file ]]
jest bliżej testu na istnienie. ls -d -- "$file" > /dev/null 2>&1
jest jeszcze bliżej. Z reguły ten rodzaj testu prowadzi do warunków wyścigowych. Może jest inny sposób.
[[ ! -f /etc/.../... ]]; echo $?
dla każdego.