Hva betyr -f i en if-setning i et bash-skript?

Prøver å forstå dette stykke koden:

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

Jeg er ikke sikker hva -f betyr nøyaktig.

Svar

Den aktuelle man-siden for å sjekke om dette er selve skallet, bash, fordi -f er funksjonalitet som skallet gir, det er en innebygd bash.

På systemet mitt (CentOS 7), den fine mansiden dekker den. grep gir kanskje ikke de samme resultatene på andre distribusjoner. Likevel, hvis du kjører man bash og deretter søker etter «-f», bør det gi de resultatene du trenger.

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

Svar

Kort sagt, koden vil kilden /etc/bashrc filen hvis den eksisterer, og eksistensen er bekreftet av [ kommando som -f er en operator / parameter.

if...then...else...fi uttalelse i skallskripting evaluerer utgangsstatus for kommandoer – 0 etter suksess. Så det er riktig å gjøre noe sånt som dette:

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

Kommandoen er i ditt tilfelle [ som også er kjent som test kommando. Så det ville være helt gyldig å gjøre

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

-f flagg bekrefter to ting: den angitte banen eksisterer og er en vanlig fil. Hvis /etc/bashrc faktisk er en katalog eller mangler, bør testen returnere ikke-nullutgangsstatus til signalfeil

Denne kommandoen var opprinnelig en egen kommando, det er ikke del av skallets innebygde kommandoer. I dag har de fleste Bourne-lignende skjell det som innebygd, og det er det skallet vil bruke.

På en sidenotat virker /etc/bashrc som unødvendig ekstra fil som administratoren din eller den opprinnelige forfatteren av kodebiten bruker. Det eksisterer /etc/bash.bashrc, som er ment som en systemomfattende RC-fil for bash, så man kan forvente at den skal brukes.

Se også:

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *