Cílem této příručky je prodiskutovat existenci souboru ve vašem systému pomocí skriptování bash:
Jak zkontrolovat existenci souboru pomocí skriptování bash:
1) Zadáním názvu souboru do terminálu:
Za prvé, musíme vytvořit soubor skriptu bash, použijte níže uvedený příkaz:
$dotektestfile.sh
Název souboru, který jsem vytvořil, je testfile.sh, přípona .sh označuje soubor skriptu shell:
Otevřete testfile.sh v libovolném textovém editoru. Poté napište skript a uložte jej stisknutím tlačítka Uložit.
Jedním ze způsobů je najít soubor tak, že od uživatele v terminálu požádáte o název souboru.
Použití -F zkontrolovat existenci souboru.
Napište následující skript:
#!/bin/bashvyhodil „Zadejte název souboru“
čístnový soubor 1
-li [ -F '$ newfile1' ]
pak
vyhodil 'Soubor je nalezen'
jiný
vyhodil 'Soubor nebyl nalezen'
být
Vraťte se na terminál a spusťte soubor pro tiskový výstup:
./název_souboru.shV terminálu by se zobrazila zpráva o odepření povolení.
Spusťte jej spuštěním níže uvedeného příkazu:
$chmod+ x testfile.sh
Zadejte název souboru a vytiskne výstup:
2) Zadáním názvu souboru při psaní skriptu:
Další způsob, jak najít soubor zadáním názvu souboru při psaní skriptu. Máme tři způsoby, jak zkontrolovat dostupnost souboru. První z nich používá příkaz test, druhý používá if s výrazem v hranatých závorkách a třetí je také s dvojitými hranatými závorkami if, jak je uvedeno níže:
- test VYJÁDŘENÍ.
- pokud [VÝRAZ]
- pokud [[VÝRAZ]]
Pojďme to pochopit na příkladech:
1) test [Výraz]
Zkopírujte daný skript a vložte jej do editoru, uložte jej:
název souboru= soubor1
-li test -F '$ název_souboru';
pak
vyhodil '$ souborbyl nalezen.'
jiný
vyhodil '$ soubornebyl nalezen '
být
Výstup:
Protože v mém adresáři žádný takový soubor není, kód proto zobrazuje zprávu Soubor nebyl nalezen.
2) pokud [Výraz]
Zkopírujte následující skript a zkontrolujte, zda soubor existuje nebo ne:
#!/bin/bashnázev souboru= myfile.txt
-li [ -F '$ název_souboru' ];
pak
vyhodil '$ název_souborubyl nalezen.'
jiný
vyhodil 'název souboru nebyl nalezen'
být
Výstup:
3) Pokud [[Výraz]]
Zkopírujte níže napsaný skript a vložte jej do terminálu:
#!/bin/bashnázev souboru= testovací soubor
-li [[ -F '$ název_souboru' ]];
pak
vyhodil '$ název_souborubyl nalezen.'
jiný
vyhodil '$ název_souborunebyl nalezen '
být
Výstup:
Kontrola adresáře:
3) Zadáním názvu adresáře při psaní skriptu
Použijte -d příznak pro kontrolu existence adresáře.
V níže uvedeném skriptu je dir11 proměnná, do které uložíte soubor, který nacházíte; v tomto případě chci zkontrolovat, zda název adresáře testDir existuje nebo ne.
#!/bin/bashdir11= testDir
-li [ -d '11 dir' ]
pak
vyhodil 'Adresář nalezen'
jiný
vyhodil 'Adresář nebyl nalezen'
být
Výstup:
2) Zadáním názvu souboru do terminálu:
Když spustíte příkaz v terminálu, abyste zkontrolovali, zda adresář existuje nebo ne, musíte zadat název adresáře, který hledáte:
vyhodil 'zadejte název adresáře.'
čístDir1
-li [ -d 'Dir1' ]
pak
vyhodil 'adresář byl nalezen'
jiný
vyhodil 'adresář nebyl nalezen'
být
Výstup:
Kontrola souboru bez použití příkazu if:
Testovací příkaz lze provést bez příkazu if. Výstup se zobrazí pouze v případě, že soubor existuje; jinak by nebyl žádný výstup:
Napsat skript:
- test -Fmyfile.txt&& vyhodil 'soubor byl nalezen'
- [ -Fmyfile.txt] && vyhodil '$ souborbylo nalezeno.'
- [[ -Fmyfile.txt]] && vyhodil '$ souborbylo nalezeno.'
Výstup:
Kontrola adresáře bez použití příkazu if:
Pomocí níže uvedených příkazů zkontrolujte, zda adresář existuje nebo ne:
- [[ -dtestDir]] && vyhodil 'adresář existuje'
- 2) [ -dtestDir] && vyhodil 'adresář existuje'
Výstup:
Kontrola více souborů/adresářů:
1) Kontrola více souborů pomocí příkazů if:
Pomocí příznaku -a zkontrolujte existenci různých souborů namísto použití vnořených příkazů if/else:
-li [ -Fnew_file.txt-na -Fnewfile.txt];pak
vyhodil 'Oba soubory existují.'
být
Dalším způsobem je:
#!/bin/bash-li [[ -Fnew_file.txt&& -Fnewfile.txt]];pak
vyhodil 'Oba soubory existují.'
být
Výstup:
2) Kontrola více souborů bez použití příkazu if:
Následující příkaz použijte ke kontrole více souborů současně 1 bez použití if:
- [[ -Fnew_file.txt&& -Fnewfile.txt]] && vyhodilOba soubory se ukončí.
- [[ -Fnew_file.txt&& -Fnewfile.txt]] && vyhodilOba soubory se ukončí.
Výstup:
Závěr:
Tento článek ukázal, jak pomocí skriptu bash zkontrolovat soubor nebo adresář. Ke kontrole dostupnosti souboru jsme použili různé možnosti. Nejprve použijeme testovací příkaz s různými příznaky. Potom jsme se naučili používat if, nested if-else a bez příkazů if ke kontrole souboru nebo adresáře. Také jsme zkoumali, jak zkontrolovat více souborů nebo adresářů.