Έχω χρησιμοποιήσει το ακόλουθο σενάριο για να δω αν υπάρχει ένα αρχείο:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Ποια'είναι η σωστή σύνταξη που πρέπει να χρησιμοποιήσω αν θέλω να ελέγξω μόνο αν το αρχείο δεν υπάρχει;
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
Η εντολή test ([
εδώ) έχει έναν λογικό τελεστή "not" που είναι το θαυμαστικό (παρόμοιο με πολλές άλλες γλώσσες). Δοκιμάστε αυτό:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Μπορείτε να αναιρέσετε μια έκφραση με την εντολή "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
Η σχετική σελίδα man είναι man test
ή, ισοδύναμα, man [
-- ή help test
ή help [
για την ενσωματωμένη εντολή bash.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Επίσης, είναι πιθανό το αρχείο να είναι ένας σπασμένος συμβολικός σύνδεσμος ή ένα μη κανονικό αρχείο, όπως π.χ. μια υποδοχή, μια συσκευή ή ένα fifo. Για παράδειγμα, για να προσθέσετε έναν έλεγχο για σπασμένους συμβολικούς συνδέσμους:
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