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