Co znamená -f v příkazu if v bash skriptu?

Pokouším se porozumět tomuto kódu:

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

Nejsem si jistý co přesně znamená -f.

Odpověď

Příslušná manuálová stránka, která to zkontroluje, je stránka samotného prostředí, bash, protože -f je funkce, kterou poskytuje shell, je integrována do bash.

V mém systému (CentOS 7), pokrývá to skvělá stránka. Soubor grep nemusí u jiných distribucí poskytovat stejné výsledky. Pokud však spustíte man bash a poté vyhledáte „-f“, mělo by to poskytnout požadované výsledky.

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

Odpověď

Stručně řečeno, část kódu vygeneruje soubor /etc/bashrc, pokud existuje, a existence je ověřena příkazem [, jehož -f je operátor / parametr.

if...then...else...fi příkaz ve skriptování prostředí vyhodnotí stav ukončení příkazů – 0 při úspěchu. Je správné udělat něco takového:

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

Příkaz je ve vašem případě [ který je také známý jako test příkaz. Takže je to naprosto platné

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

The -f příznak ověří dvě věci: zadaná cesta existuje a je běžným souborem. Pokud /etc/bashrc ve skutečnosti je adresář nebo chybí, test by měl vrátit nenulový stav ukončení, aby signalizoval selhání signálu.

Tento příkaz byl původně samostatným příkazem, který není část vestavěných příkazů shellu. V dnešní době je většina shellů podobných Bourneovi jako vestavěný, a právě to shell použije.

Na okraj se /etc/bashrc jeví jako zbytečný soubor navíc, který používá váš administrátor nebo původní autor fragmentu kódu. Existuje /etc/bash.bashrc, který je určen jako celosystémový soubor rc pro bash, takže by se dalo očekávat, že bude použito.

Viz také:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *