Како проверити да ли датотека или директоријум постоји у Басх Схелл скрипти

Провера да ли датотека или директоријум постоји из Басх скрипте

Басх се користи за аутоматизацију команди које се редовно извршавају у Линуку. Команде које су намењене операцијама над датотекама/директоријумима се доста често користе и обично, пре него што извршимо такву команду, морамо да проверимо да ли одређени фајл или директоријум постоји. Хајде да видимо како да извршимо ову проверу.

Синтакса и употреба

Фајлови

Да бисте проверили да ли датотека постоји, користите следећу синтаксу:

[ -ф ]

Израз [ -ф ] враћа 0, тј. успех ако постоји, а ако не постоји, враћа статус који није нула. Обично се ово користи као услов у ако изјава.

ако је [ -ф ] онда фи

Да негирате враћену вредност, једноставно претходи са оператором негације (!).

ако [ ! -ф ] затим фи

У овом случају, услов ће задовољити ако фајл не постоји, пошто ће враћени статус који није нула (нетачно) бити негиран и сматран 0 (тачно).

Имајте на уму да ако датотека коју треба проверити не постоји у тренутном директоријуму и постоји у неком другом директоријуму, треба поменути пуну путању датотеке уместо само имена датотеке.

Именици

Слична синтакса која се користи за проверу датотека користи се за проверу директоријума.

[-д]

Слично наредби за датотеке, ова изјава враћа 0, тј. успех, ако је директоријум постоји, а не нула, тј. статус грешке се враћа ако не постоји. Ово се такође обично користи у ако стање изјаве.

ако је [ -д ] онда фи

Да бисте поништили враћени статус, претходите са оператором негације (!).

ако [ ! -д ] онда фи

Услов ће задовољити (статус 0) у овом случају ако директоријум не постоји, и неће успети (статус који није нула) ако директоријум постоји.

Као што је раније поменуто за датотеке, ако директоријум који треба проверити постоји на другој локацији, а не у тренутном директоријуму, треба да се унесе цела путања директоријума уместо само имена директоријума.

💡 Синтакса заграде ( [...] ) која се овде користи је заправо Линук команда под називом тест. Опције и су карактеристике ове команде. За више информација погледајте страницу приручника за тестирање ( ман тест ).

Проверите из Басх скрипте

У горњим примерима користили смо синтаксе директно на терминалу. Шкољка кад год наиђе на петљу или условну изјаву (ако у нашем случају), наставља промпт и дозвољава кориснику да уђе у наставак блока.

Иста синтакса се може користити унутар Басх скрипте.

Тхе #!/бин/басх на почетку одређује интерпретер који ће се користити када се датотека изврши. Иако је Басх најчешће коришћена шкољка данас, неки корисници више воле шкољке попут зсх, који треба да буде наведен уместо басх на почетку ове датотеке.

Да бисте дали дозволе за извршење за ову датотеку, покрените:

цхмод +к тест.сх

коначно, да извршите датотеку, трцати:

./тест.сх