Cosa significa -f in unistruzione if in uno script bash?

Sto cercando di capire questo pezzo di codice:

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

“Non ne sono sicuro cosa significa esattamente -f.

Risposta

La pagina di manuale pertinente da controllare è quella della shell stessa, bash, poiché -f è la funzionalità fornita dalla shell, “è una bash integrata.

Sul mio sistema (CentOS 7), la bella pagina man lo copre. grep potrebbe non dare gli stessi risultati su altre distribuzioni. Tuttavia, se esegui man bash e poi cerchi “-f” dovrebbe fornire i risultati desiderati.

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

Answer

In breve, il pezzo di codice darà origine al file /etc/bashrc se esiste, e il lesistenza è verificata dal [ comando di cui -f è un operatore / parametro.

nello script di shell valuta lo stato di uscita dei comandi – 0 in caso di successo. Quindi è corretto fare qualcosa del genere:

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

Il comando, nel tuo caso, è [ che è anche noto come comando test. Quindi “sarebbe perfettamente valido

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

Il -f flag verifica due cose: il percorso fornito esiste ed è un file normale. Se /etc/bashrc è in realtà una directory o manca, test dovrebbe restituire uno stato di uscita diverso da zero per segnalare un errore

Questo comando originariamente era un comando separato, che non lo è parte dei comandi incorporati della shell. Oggigiorno, la maggior parte delle shell tipo Bourne lo hanno come integrato, e questo è ciò che la shell userà.

In una nota a margine, il /etc/bashrc sembra un file extra non necessario che sta utilizzando lamministratore o lautore originale dello snippet di codice. Esiste /etc/bash.bashrc, che è inteso come file rc a livello di sistema per bash, quindi ci si aspetterebbe che venga utilizzato.

Vedi anche:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *