Баш сценарийі бойынша тест жағдайларын қалай пайдалануға болады

Сынақ командалары Linux командалық жолында бір элементті басқа біреумен салыстыруға пайдаланылуы мүмкін, бірақ логика мен бағдарламаның ағынын бақылайтын шартты мәлімдемелердің бөлігі ретінде BASH қабы сценарийлерінде жиі пайдаланылады.

Негізгі мысал

Терминал терезесін ашу арқылы осы командаларды көріңіз.

тест 1 -eq 2 && echo «yes» || echo «no»

Жоғарыда көрсетілген команданы төмендегідей бөлуге болады:

Шын мәнінде, пәрмен 1-ден 2-ді салыстырады және олар «иә» дегенді білдіретін «иә» деген сөзге сәйкес келеді және егер олар «жоқ» дегенді білдіретін «no» сөзінің орындалуына сәйкес келмесе.

Сандарды салыстыру

Сандарды талдайтын элементтерді салыстырып жатсаңыз, келесі салыстыру амалдағышын қолдана аласыз:

Мысалдар:

тест 1 -eq 2 && echo «yes» || echo «no»

(Экранға «жоқ» көрсетеді, себебі 1 тең емес 2)

test 1 -ge 2 && echo «yes» || echo «no»

(бейнебетке «жоқ» көрсетеді, себебі 1 артық емес немесе 2-ке тең)

сынақ 1 -gt 2 && echo «yes» || echo «no»

(Экранға «жоқ» көрсетеді, себебі 1 артық 2)

test 1 -le 2 && echo «yes» || echo «no»

(Экранға «иә» көрсетеді, өйткені 1 -ден аз немесе тең 2)

тест 1 -lt 2 && echo «yes» || echo «no»

(Экранға «иә» көрсетеді, өйткені 1 -ден аз немесе тең 2)

тест 1 -ne 2 && echo «yes» || echo «no»

(Экранға «иә» көрсетеді, өйткені 1 тең емес 2)

Мәтінді салыстыру

Егер сіз сызық ретінде талдайтын элементтерді салыстырсаңыз, төмендегі салыстыру операторларын қолдана аласыз:

Мысалдар:

test «string1» = «string2» && echo «yes» || echo «no»

(«string1» тең «string2» тең емес, өйткені экранға «жоқ» көрсетеді)

test «string1»! = «string2» && echo «yes» || echo «no»

(«string1» тең «string2» тең емес, өйткені экранға «иә» көрсетеді)

test -n «string1» && echo «yes» || echo «no»

(экранға «иә» көрсетіледі, себебі «string1» нөлден үлкен жол ұзындығы бар)

test -z «string1» && echo «yes» || echo «no»

(«string1» жолдың ұзындығы нөлден жоғары болғандықтан, экранға «жоқ» көрсетеді)

Файлдарды салыстыру

Егер сіз файлдарды салыстыру арқылы келесі салыстыру операторларын пайдалана аласыз:

Мысалдар:

test / path / to / file1 -n / path / to / file2 && echo «иә»

(Егер file1 file2 қарағанда жаңа болса, онда «yes» сөзі көрсетіледі)

test -e / path / to / file1 && echo «иә»

(егер файл1 бар болса, «иә» сөзі көрсетіледі)

тест -O / path / to / file1 && echo «yes»

(егер сізде file1 болса, онда «yes» сөзі көрсетіледі «)

Терминология

Бірнеше шарттарды салыстыру

Осы уақытқа дейін бәрі бір нәрсені басқасына салыстырады, ал егер сіз екі жағдайды салыстырғыңыз келсе.

Мысалы, егер жануардың төрт аяғы болса және «му» болса, бұл сиыр болуы мүмкін. Жай ғана 4 аяқты тексеріп отырсаңыз, сізде сиыр бар, бірақ ол дыбысты тексереді.

Екі шартты бір уақытта тексеру үшін келесі мәліметті пайдаланыңыз:

тест 4 -eq 4 -a «moo» = «moo» && echo «бұл сиыр» || echo «бұл сиыр емес»

Мұнда негізгі бөлік -a және ол тұр.

Бір сынақты орындаудың жақсы және жиі қолданылатын әдісі бар және келесідей:

тест 4 -eq 4 && сынағы «moo» = «moo» && echo «бұл сиыр» || echo «бұл сиыр емес»

Сіз жасай алатын тағы бір тест екі сөзді салыстыру және егер шын болса, жолды шығарады. Мысалы, «file1.txt» деп аталатын файл бар екенін немесе «file1.doc» деп аталатын файл бар екенін тексергіңіз келсе, келесі пәрменді пайдалануға болады

test -e файл1.txt -o -e file1.doc && echo «file1 бар» || echo «file1 жоқ»

Мұнда негізгі бөлік -o-не болып табылады.

Бір сынақты орындаудың жақсы және жиі қолданылатын әдісі бар және келесідей:

test -e файл1.txt || test -e file1.doc && echo «file1 бар» || echo «file1 жоқ»

Тесттің негізгі сөзін жою

Салыстыру үшін сөз сынағын пайдаланудың қажеті жоқ. Сізге тек қана тік жақшалардағы мәлімдеме төмендегідей:

[-e file1.txt] && echo «file1 бар» || echo «file1 жоқ»

[Және] негізінен тест ретінде бірдей.

Енді сіз бірнеше шартты салыстыру бойынша жақсарта алатыныңызды білесіз:

[4 -eq 4] && [«moo» = «moo»] && echo «бұл сиыр» || echo «бұл сиыр емес»

[-e файл1.txt] || [-e file1.doc] && echo «file1 бар» || echo «file1 жоқ»

Резюме

Сынақ пәрмені сценарийлерде пайдалы, себебі бір айнымалы мәнін басқасына және басқару бағдарламасының ағынына тексере аласыз. Стандартты пәрмен жолында оны файлдың бар-жоғын тексеру үшін пайдалануға болады