Jak zkontrolovat, zda soubor nebo adresář existuje ve skriptu Bash Shell

Kontrola, zda existuje soubor nebo adresář ze skriptu Bash

Bash se používá pro automatizaci pravidelně prováděných příkazů v Linuxu. Příkazy, které jsou určeny pro operace se soubory/adresáři, jsou poměrně často používané a obvykle, než takový příkaz spustíme, musíme zkontrolovat, zda daný soubor nebo adresář existuje. Podívejme se, jak tuto kontrolu provést.

Syntaxe a použití

Soubory

Chcete-li zkontrolovat, zda soubor existuje, použijte následující syntaxi:

[ -f]

Výraz [ -f] vrátí 0, tj. úspěch, pokud existuje, a pokud neexistuje, vrátí stav nenulový. Obvykle se to používá jako podmínka v -li tvrzení.

jestliže [ -f ] pak fi

Chcete-li negovat vrácenou hodnotu, jednoduše předcházet -F s operátorem negace (!).

pokud [ ! -f ] pak fi

V tomto případě podmínku splní, pokud soubor neexistuje, protože vrácený nenulový stav (false) bude negován a považován za 0 (true).

Všimněte si, že pokud soubor, který má být zkontrolován, neexistuje v aktuálním adresáři a existuje v nějakém jiném adresáři, měla by být uvedena úplná cesta k souboru namísto pouze názvu souboru.

Adresáře

Podobná syntaxe jako pro kontrolu souborů se používá pro kontrolu adresářů.

[ -d]

Podobně jako příkaz pro soubory vrací tento příkaz 0, tj. úspěch, pokud je adresář existuje a nenulový, tj. stav selhání, je vrácen, pokud neexistuje. To se také běžně používá v -li podmínka výpisu.

jestliže [ -d ] pak fi

Chcete-li negovat vrácený stav, předejte -d s operátorem negace (!).

pokud [ ! -d ] pak fi

Podmínka bude splněna (stav 0) v tomto případě, pokud adresář neexistuje, a selže (stav nenulový), pokud adresář existuje.

Jak již bylo zmíněno u souborů, pokud adresář, který má být zkontrolován, existuje na jiném místě a ne v aktuálním adresáři, je třeba zadat celou cestu k adresáři namísto pouze názvu adresáře.

💡 Syntaxe závorek ( [...] ), který se zde používá, je ve skutečnosti linuxový příkaz nazvaný test. Možnosti -F a -d jsou vlastnosti tohoto příkazu. Další informace naleznete v manuálové stránce testu ( mužský test ).

Zkontrolujte ze skriptu Bash

Ve výše uvedených příkladech jsme použili syntaxe přímo na terminálu. Shell, kdykoli narazí na smyčku nebo podmíněný příkaz (-li v našem případě), pokračuje ve výzvě a umožňuje uživateli zadat pokračování bloku.

Stejné syntaxe lze použít ze skriptu Bash.

The #!/bin/bash na začátku určuje interpret, který se má použít při spuštění souboru. Ačkoli je Bash dnes nejběžněji používaným shellem, někteří uživatelé preferují shelly jako zsh, který by měl být specifikován místo bash na začátku tohoto souboru.

Udělit oprávnění ke spuštění pro tento soubor spusťte:

chmod +x test.sh

Konečně, spustit soubor, spustit:

./test.sh