Ik'heb het volgende script gebruikt om te zien of een bestand bestaat:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Wat'is de juiste syntaxis om te gebruiken als ik alleen wil controleren of het bestand niet bestaat?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
Het test commando ([
hier) heeft een "not" logische operator die het uitroepteken is (vergelijkbaar met veel andere talen). Probeer dit maar eens:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Je kunt een uitdrukking ontkennen met "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
De relevante man page is man test
of, gelijkwaardig, man [
-- of help test
of help [
voor het ingebouwde bash commando.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Ook is het mogelijk dat het bestand een gebroken symbolische link is, of een niet-regulier bestand, zoals bijvoorbeeld een socket, apparaat of fifo. Bijvoorbeeld, om een controle voor gebroken symlinks toe te voegen:
if [[ ! -f $FILE ]]; then
if [[ -L $FILE ]]; then
printf '%s is a broken symlink!\n' "$FILE"
else
printf '%s does not exist!\n' "$FILE"
fi
fi