GNU/Linux >> Znalost Linux >  >> Linux

Jak zkontrolovat, zda v prostředí Bash Shell existuje soubor nebo adresář

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.


Linux
  1. Jak zkontrolovat průběh běhu Cp?

  2. Jak zkontrolovat podřetězec v Shell Script Bash?

  3. Zkontrolujte, zda v adresáři existuje určitý typ souboru/přípona

  1. Jak zkontrolovat, zda existuje příkaz shellu z PHP

  2. Jak mohu zkontrolovat, zda adresář existuje?

  3. Jak získám absolutní adresář souboru v bash?

  1. Jak zkontrolovat, zda soubor existuje v konkrétním adresáři ve skriptu bash?

  2. Bash:Žádný takový soubor nebo adresář?

  3. Jak grepovat část souboru v bash shellu