Pokud pracujete na skriptu Bash, který komunikuje se soubory a adresáři, můžete narazit na situaci, kdy se budete muset ujistit, že soubor nebo adresář existuje. To pomáhá vyhnout se možným chybám při provádění určitých akcí se souborem, který neexistuje.
V tomto tutoriálu vám ukážu několik způsobů, jak zkontrolovat, zda soubor nebo adresář existuje ve skriptu bash nebo ne. Začněme nejprve souborem.
Zkontrolujte, zda soubor existuje ve skriptu bash

Myšlenka je zde použít operátor -f, který vrací true pouze v případě, že se jedná o běžný soubor (ne adresář).
Řekněme, že chcete zkontrolovat, zda soubor /home/user/my_file existuje nebo ne. Zde je návod, jak to zkontrolovat pomocí hranatých závorek
#!/bin/bash
if [ -f /home/user/my_file ]
then
echo "My file exists"
fi
Ale ne vždy dostanete název souboru předem, že? Můžete to mít v proměnné, a pokud je to tak, můžete to použít tímto způsobem.
#!/bin/bash
FILE=/home/user/my_file
if [ -f "$FILE" ]
then
echo "My file exists"
else
echo "My file doesn't exist"
fi
V zásadě záleží na podmínce, kterou použijete v příkazu if. Je na vás, jak chcete použít příkaz if.
Můžete to například napsat se dvěma hranatými závorkami, ponechat „pak“ ve stejném řádku jako „pokud“ pomocí středníku takto:
#!/bin/bash
FILE=/home/user/my_file
if [ -f "$FILE" ]; then
echo "My file exists"
else
echo "My file doesn't exist"
fi
nebo celé prohlášení složte takto:
[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"
Kontrola existence souboru v bash pomocí testu
Můžete také použít test v bash, abyste zjistili, zda soubor existuje nebo ne. Je to v podstatě to samé, jen v příkazu if nepoužíváte hranaté závorky:
#!/bin/bash
FILE=/home/user/my_file
if test -f "$FILE"
then
echo "My file exists"
else
echo "My file doesn't exist"
fi
Výše uvedený kód můžete také použít na jednom řádku takto:
test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"
Zkontrolujte, zda soubor neexistuje ve skriptu bash
Co když je to naopak a chcete zkontrolovat, zda soubor v bash neexistuje? Můžete použít téměř stejný kód jako výše pomocí operátoru negace:
#!/bin/bash
FILE=/home/user/my_file
if [ ! -f "$FILE" ]
then
echo "My file doesn't exist"
fi
Nyní, když víte, jak zacházet se soubory, přejděme k adresářům.
Zkontrolujte, zda adresář existuje ve skriptu bash
Kód pro kontrolu adresáře je stejný jako ten, který jste viděli v předchozí části. Jediný rozdíl je v tom, že budete používat -d místo -f. -d vrací true pouze pro adresáře.
#!/bin/bash
if [ -d /home/user/my_dir ]
then
echo "My directory exists"
fi
Můžete také použít test zde:
#!/bin/bash
DIR=/home/user/my_dir
if test -d "$DIR"
then
echo "My directory exists"
else
echo "My directory doesn't exist"
fi
Zkontrolujte, zda adresář v bash neexistuje
Negaci můžete znovu použít ke kontrole, zda adresář neexistuje:
#!/bin/bash
DIR=/home/user/my_dir
if [ ! -d "$DIR" ]
then
echo "My directory doesn't exist"
fi
A je to. To je vše, co musíte udělat pro kontrolu, zda adresář souboru v bash shellu existuje nebo ne.
Doufám, že vám tento bashový tip bude užitečný. Pokud máte nějaké dotazy nebo návrhy, neváhejte zanechat komentář níže.