Jeg har brukt følgende skript for å se om det finnes en fil:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Hva er riktig syntaks å bruke hvis jeg bare vil sjekke om filen ikke finnes?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
Kommandoen test ([
her) har en "not" logisk operator som er utropstegnet (i likhet med mange andre språk). Prøv dette:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Du kan negere et uttrykk med "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
Den relevante man-siden er man test
eller, tilsvarende, man [
-- eller help test
eller help [
for den innebygde bash-kommandoen.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Det er også mulig at filen er en ødelagt symbolsk lenke eller en ikke-vanlig fil, som f.eks. en socket, enhet eller fifo. For eksempel for å legge til en sjekk for ødelagte symbolske lenker:
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