Unix / Linux - Esempio di operatori di test di file shell
Abbiamo alcuni operatori che possono essere utilizzati per testare varie proprietà associate a un file Unix.
Assumi una variabile file contiene un nome file esistente "test" la cui dimensione è di 100 byte e ha read, write e execute permesso su -
Operatore | Descrizione | Esempio |
---|---|---|
-b file | Controlla se il file è un file speciale a blocchi; se sì, la condizione diventa vera. | [-b $ file] è falso. |
-c file | Controlla se il file è un file speciale di caratteri; se sì, la condizione diventa vera. | [-c $ file] è falso. |
-d file | Controlla se il file è una directory; se sì, la condizione diventa vera. | [-d $ file] non è vero. |
-f file | Controlla se il file è un file ordinario anziché una directory o un file speciale; se sì, la condizione diventa vera. | [-f $ file] è vero. |
-g file | Controlla se il file ha il bit impostato per l'ID gruppo (SGID) impostato; se sì, la condizione diventa vera. | [-g $ file] è falso. |
-k file | Controlla se il file ha il suo sticky bit impostato; se sì, la condizione diventa vera. | [-k $ file] è falso. |
-p file | Controlla se il file è una named pipe; se sì, la condizione diventa vera. | [-p $ file] è falso. |
-t file | Controlla se il descrittore di file è aperto e associato a un terminale; se sì, la condizione diventa vera. | [-t $ file] è falso. |
-u file | Controlla se il file ha il bit Set User ID (SUID) impostato; se sì, la condizione diventa vera. | [-u $ file] è falso. |
-r file | Controlla se il file è leggibile; se sì, la condizione diventa vera. | [-r $ file] è vero. |
-w file | Controlla se il file è scrivibile; se sì, la condizione diventa vera. | [-w $ file] è vero. |
-x file | Controlla se il file è eseguibile; se sì, la condizione diventa vera. | [-x $ file] è vero. |
-s file | Controlla se il file ha una dimensione maggiore di 0; se sì, allora la condizione diventa vera. | [-s $ file] è vero. |
-e file | Controlla se il file esiste; è vero anche se file è una directory ma esiste. | [-e $ file] è vero. |
Esempio
L'esempio seguente utilizza tutti i file file test operatori -
Supponiamo che un file variabile contenga un nome file esistente "/var/www/tutorialspoint/unix/test.sh" la cui dimensione è di 100 byte e ha read, write e execute permesso -
#!/bin/sh
file="/var/www/tutorialspoint/unix/test.sh"
if [ -r $file ]
then
echo "File has read access"
else
echo "File does not have read access"
fi
if [ -w $file ]
then
echo "File has write permission"
else
echo "File does not have write permission"
fi
if [ -x $file ]
then
echo "File has execute permission"
else
echo "File does not have execute permission"
fi
if [ -f $file ]
then
echo "File is an ordinary file"
else
echo "This is sepcial file"
fi
if [ -d $file ]
then
echo "File is a directory"
else
echo "This is not a directory"
fi
if [ -s $file ]
then
echo "File size is not zero"
else
echo "File size is zero"
fi
if [ -e $file ]
then
echo "File exists"
else
echo "File does not exist"
fi
Lo script sopra produrrà il seguente risultato:
File does not have write permission
File does not have execute permission
This is sepcial file
This is not a directory
File size is not zero
File does not exist
I seguenti punti devono essere considerati durante l'utilizzo degli operatori di test dei file:
Devono essere presenti degli spazi tra gli operatori e le espressioni. Ad esempio, 2 + 2 non è corretto; dovrebbe essere scritto come 2 + 2.
if...then...else...fi dichiarazione è una dichiarazione decisionale che è stata spiegata nel prossimo capitolo.