Que signifie -f dans une instruction if dans un script bash?

Essayer de comprendre ce bout de code:

if [ -f /etc/bashrc ]; then . /etc/bashrc fi 

Je « ne suis pas sûr ce que signifie exactement -f.

Réponse

La page de manuel appropriée pour vérifier cela est celle du shell lui-même, bash, car -f est une fonctionnalité fournie par le shell, cest « une bash intégrée.

Sur mon système (CentOS 7), la belle page de manuel le couvre. Le grep peut ne pas donner les mêmes résultats sur dautres distributions. Néanmoins, si vous exécutez man bash puis recherchez « -f », il devrait donner les résultats dont vous avez besoin.

$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $ 

Réponse

En bref, le morceau de code va générer le fichier /etc/bashrc sil existe, et le lexistence est vérifiée par la commande [ dont -f est un opérateur / paramètre.

if...then...else...fi dans le script shell évalue létat de sortie des commandes – 0 en cas de succès. Il est donc approprié de faire quelque chose comme ceci:

if ping -c 4 google.com; then echo "We have a connection!" fi 

La commande, dans votre cas, est [ qui est également connue sous le nom de commande test. Il serait donc parfaitement valable de faire

if test -f /etc/bashrc; then . /etc/bashrc fi 

Le -f flag vérifie deux choses: le chemin fourni existe et est un fichier normal. Si /etc/bashrc est en fait un répertoire ou est manquant, le test doit renvoyer un statut de sortie différent de zéro pour signaler léchec

Cette commande était à lorigine une commande distincte, ce nest pas fait partie des commandes intégrées du shell. De nos jours, la plupart des shells de type Bourne lont intégré, et cest ce que le shell utilisera.

Sur une note latérale, le /etc/bashrc semble être un fichier supplémentaire inutile que votre administrateur ou lauteur original de lextrait de code utilise. Il existe /etc/bash.bashrc, qui est conçu comme un fichier rc à léchelle du système pour bash, donc on peut sattendre à ce quil soit utilisé.

Voir aussi:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *