Jeg har brugt følgende script til at se, om der findes en fil:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Hvad'er den korrekte syntaks at bruge, hvis jeg kun vil kontrollere, om filen ikke eksisterer?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
Kommandoen test ([
her) har en logisk operatør "not" som er et udråbstegn (som på mange andre sprog). Prøv dette:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Du kan negere et udtryk med "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
Den relevante man-side er man test
eller, tilsvarende, man [
-- eller help test
eller help [
for den indbyggede bash-kommando.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Det er også muligt, at filen er et ødelagt symbolsk link eller en ikke-regulær fil, som f.eks. en socket, enhed eller fifo. For eksempel for at tilføje en kontrol for brudte symlinks:
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