Hvad betyder -f i en if-sætning i et bash-script?

Forsøger at forstå dette stykke kode:

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

Jeg er ikke sikker hvad -f betyder nøjagtigt.

Svar

Den relevante mandeside, der skal kontrolleres for dette, er selve skallen, bash, fordi -f er funktionalitet, som skallen giver, det er en indbygget bash.

På mit system (CentOS 7), den fine mandside dækker det. grep giver muligvis ikke de samme resultater på andre distributioner. Ikke desto mindre, hvis du kører man bash og derefter søger efter “-f”, skal det give de ønskede resultater.

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

Svar

Kort sagt, koden vil kilden til /etc/bashrc fil, hvis den findes, og eksistens er verificeret med [ kommando, som -f er en operator / parameter.

if...then...else...fi erklæring i shell-scripting evaluerer kommandos udgangsstatus – 0 efter succes. Så det er korrekt at gøre noget som dette:

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

Kommandoen er i dit tilfælde [ som også er kendt som test kommando. Så det ville være perfekt gyldigt at gøre

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

-f flag verificerer to ting: den angivne sti findes og er en almindelig fil. Hvis /etc/bashrc faktisk er en mappe eller mangler, skal testen returnere status for ikke-nul udgang til signalfejl

Denne kommando var oprindeligt en separat kommando, det er ikke del af shell “s indbyggede kommandoer. I dag har de fleste Bourne-lignende skaller det som indbygget, og det er, hvad shell skal bruge.

På en sidebemærkning virker /etc/bashrc som unødvendig ekstra fil, som din administrator eller den originale forfatter af kodestykket bruger. Der findes /etc/bash.bashrc, som er beregnet som en system-bred rc-fil til bash, så man forventer, at den skal bruges.

Se også:

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *