Сынақ командалары Linux командалық жолында бір элементті басқа біреумен салыстыруға пайдаланылуы мүмкін, бірақ логика мен бағдарламаның ағынын бақылайтын шартты мәлімдемелердің бөлігі ретінде BASH қабы сценарийлерінде жиі пайдаланылады.
Негізгі мысал
Терминал терезесін ашу арқылы осы командаларды көріңіз.
тест 1 -eq 2 && echo «yes» || echo «no»
Жоғарыда көрсетілген команданы төмендегідей бөлуге болады:
- сынақ - бұл сіз салыстыруды жоспарлап отырсыз
- 1 - салыстыру үшін бірінші элемент
- -eq (сіз қалай салыстырасыз, бұл жағдайда сіз бір нөмірдің басқа біреуін тексеріп жатырсыз)
- 2 - бірінші элементті қайта салыстырсаңыз элемент
- && - егер нәтиже шын болса, келесі нұсқауларды орындаңыз
- echo «yes» - егер салыстыру дұрыс болса, іске қосу командасы
- | | - нәтиже жалған болса, келесі мәлімдеме орындаңыз
- echo «no» - салыстыру жалғанған болса, іске қосу командасы
Шын мәнінде, пәрмен 1-ден 2-ді салыстырады және олар «иә» дегенді білдіретін «иә» деген сөзге сәйкес келеді және егер олар «жоқ» дегенді білдіретін «no» сөзінің орындалуына сәйкес келмесе.
Сандарды салыстыру
Сандарды талдайтын элементтерді салыстырып жатсаңыз, келесі салыстыру амалдағышын қолдана аласыз:
- -eq - мән 1 тең мән 2
- -ge - мән 2 немесе 2 мәніне тең
- -gt - мән 2-ден асатын 2-ден артық
- -le - 1 мәніне тең немесе одан кем 2 мән
- -lt - мәні 2 мәннен кем 1
- -ne - мән 1 тең емес мән 2
Мысалдар:
тест 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)
Мәтінді салыстыру
Егер сіз сызық ретінде талдайтын элементтерді салыстырсаңыз, төмендегі салыстыру операторларын қолдана аласыз:
- = - 1 жолдың 2 жолы бар
- ! = - 2 жолға 1 жолдан тұрады
- -n - бұл жол ұзындығы 0-ден артық
- -z - бұл жол ұзындығы 0
Мысалдар:
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» жолдың ұзындығы нөлден жоғары болғандықтан, экранға «жоқ» көрсетеді)
Файлдарды салыстыру
Егер сіз файлдарды салыстыру арқылы келесі салыстыру операторларын пайдалана аласыз:
- -ef - Файлдар бірдей құрылғыға және инодтық нөмірлерге ие бола ма (олар сол файл)
- -nt - екінші файлдан жаңа файл бірінші болып табылады
- -ot - екінші файлдан асатын бірінші файл
- -b - файл бар және ерекше блокты
- -c - Файл бар және арнайы таңба болып табылады
- -d - Файл бар және каталог
- -e - Файл бар
- -f - Файл бар және тұрақты файл болып табылады
- -g - Файл бар және көрсетілген топ нөмірі бар
- -G - Пайдаланушы тобы бар және иесі бар файл
- -h - Файл бар және символдық байланыс
- -k - Файл бар және жабысқақ бит жиынтығы бар
- -L - Сонымен қатар -h
- -O - Файл сіз иесіз
- -p - Файл бар және аталған түтік болып табылады
- -r - Файл бар және оқуға болады
- -s - Файл бар және нөлден үлкен өлшемі бар
- -S - Файл бар және розетка
- -t - Файл дескрипторы терминалда ашылады
- -u - Файл бар және set-user-id бит орнатылған
- -w - Файл бар және жаза алады
- -x - Файл бар және орындалады
Мысалдар:
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 жоқ»
Резюме
Сынақ пәрмені сценарийлерде пайдалы, себебі бір айнымалы мәнін басқасына және басқару бағдарламасының ағынына тексере аласыз. Стандартты пәрмен жолында оны файлдың бар-жоғын тексеру үшін пайдалануға болады