Vad betyder -f i ett if-uttalande i ett bash-skript?

Försöker förstå denna kod:

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

Jag är inte säker vad -f betyder exakt.

Svar

Den relevanta mansidan som ska kontrolleras är den för själva skalet, bash, eftersom -f är funktionalitet som skalet ger, det är en inbyggd bash.

På mitt system (CentOS 7), den fina mansidan täcker den. grep kanske inte ger samma resultat för andra distributioner. Ändå, om du kör man bash och sedan söker efter ”-f” bör det ge de resultat du behöver.

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

Svar

Kort sagt, koden kommer att källa till /etc/bashrc -fil om den finns, och existensen verifieras av [ kommando som -f är en operatör / parameter.

if...then...else...fi uttalande i shell-skript utvärderar utgångsstatus för kommandon – 0 efter framgång. Så det är rätt att göra något så här:

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

Kommandot är i ditt fall [ vilket också kallas test -kommando. Så det skulle vara helt giltigt att göra

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

-f flagg verifierar två saker: den angivna sökvägen finns och är en vanlig fil. Om /etc/bashrc faktiskt är en katalog eller saknas, ska testet returnera icke-nollutgångsstatus till signalfel

Detta kommando var ursprungligen ett separat kommando, det är inte del av skalets inbyggda kommandon. Numera har de flesta Bourne-liknande skalen det som inbyggt, och det är vad skalet kommer att använda.

På en sidoteckning verkar /etc/bashrc som onödig extra fil som din administratör eller originalförfattare av kodavsnittet använder. Det finns /etc/bash.bashrc, som är tänkt som en systemomfattande RC-fil för bash, så man kan förvänta sig att den ska användas.

Se även:

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *