Провера да ли датотека или директоријум постоји из Басх скрипте
Басх се користи за аутоматизацију команди које се редовно извршавају у Линуку. Команде које су намењене операцијама над датотекама/директоријумима се доста често користе и обично, пре него што извршимо такву команду, морамо да проверимо да ли одређени фајл или директоријум постоји. Хајде да видимо како да извршимо ову проверу.
Синтакса и употреба
Фајлови
Да бисте проверили да ли датотека постоји, користите следећу синтаксу:
[ -ф ]
Израз [ -ф ]
враћа 0, тј. успех ако постоји, а ако не постоји, враћа статус који није нула. Обично се ово користи као услов у
ако
изјава.
ако је [ -ф ] онда фи
Да негирате враћену вредност, једноставно претходи -ф
са оператором негације (!
).
ако [ ! -ф ] затим фи
У овом случају, услов ће задовољити ако фајл не постоји, пошто ће враћени статус који није нула (нетачно) бити негиран и сматран 0 (тачно).
Имајте на уму да ако датотека коју треба проверити не постоји у тренутном директоријуму и постоји у неком другом директоријуму, треба поменути пуну путању датотеке уместо само имена датотеке.
Именици
Слична синтакса која се користи за проверу датотека користи се за проверу директоријума.
[-д]
Слично наредби за датотеке, ова изјава враћа 0, тј. успех, ако је директоријум постоји, а не нула, тј. статус грешке се враћа ако не постоји. Ово се такође обично користи у
ако
стање изјаве.
ако је [ -д ] онда фи
Да бисте поништили враћени статус, претходите -д
са оператором негације (!
).
ако [ ! -д ] онда фи
Услов ће задовољити (статус 0) у овом случају ако директоријум не постоји, и неће успети (статус који није нула) ако директоријум постоји.
Као што је раније поменуто за датотеке, ако директоријум који треба проверити постоји на другој локацији, а не у тренутном директоријуму, треба да се унесе цела путања директоријума уместо само имена директоријума.
💡 Синтакса заграде ( [...]
) која се овде користи је заправо Линук команда под називом тест
. Опције -ф
и -д
су карактеристике ове команде. За више информација погледајте страницу приручника за тестирање ( ман тест
).
Проверите из Басх скрипте
У горњим примерима користили смо синтаксе директно на терминалу. Шкољка кад год наиђе на петљу или условну изјаву (ако
у нашем случају), наставља промпт и дозвољава кориснику да уђе у наставак блока.
Иста синтакса се може користити унутар Басх скрипте.
Тхе #!/бин/басх
на почетку одређује интерпретер који ће се користити када се датотека изврши. Иако је Басх најчешће коришћена шкољка данас, неки корисници више воле шкољке попут зсх
, који треба да буде наведен уместо басх на почетку ове датотеке.
Да бисте дали дозволе за извршење за ову датотеку, покрените:
цхмод +к тест.сх
коначно, да извршите датотеку, трцати:
./тест.сх