Команда теста се може користити на Линук командној линији да би упоредила један елемент против другог, али се најчешће користи у БАСХ схелл скриптама као део условних изјава које контролишу логику и проток програма.
Основни пример
Можете пробати ове команде једноставно отварањем прозора терминала .
тест 1-ек 2 && ецхо "да" || ехо "не"
Горња команда може се разврстати на следећи начин:
- тест - ово значи да ћете извршити упоређивање
- 1 - први елемент који ћете упоредити
- -ек (како упоређујете, у овом случају, тестирате да ли је један број једнак другом)
- 2 - елемент који поново упоређујете први елемент
- && - покрените следећу изјаву ако је резултат истинит
- ецхо "иес" - команда за покретање ако се поређење подноси труе
- || - покрените следећу изјаву ако је резултат лажан
- ецхо "но" - команда за покретање ако се поређење подноси неисправно
У суштини, команда се упоређује од 1 до 2 и оне се подударају са ецхо "иес" изјава се извршава која приказује "да" и ако се не подударају са ецхо "но" изводом се извршава која приказује "не".
Упоређивање бројева
Ако упоређујете елементе који разматрају бројеве, можете користити следеће операторе поређења:
- -ек - вриједи 1 једнаку вриједност 2
- -ге - вредност 1 је већа или једнака вредности 2
- -гт - вредност 1 је већа од вредности 2
- -ле - вредност 1 је мања или једнака вредности 2
- -лт - вредност 1 је мања од вредности 2
- -не - вриједност 1 није једнака вриједност 2
Примери:
тест 1-ек 2 && ецхо "да" || ехо "не"
(приказује се "не" на екрану јер 1 не одговара 2)
тест 1 -ге 2 && ецхо "да" || ехо "не"
(приказује "не" на екрану јер 1 није већи или једнак 2)
тест 1 -гт 2 && ецхо "да" || ехо "не"
(приказује се "не" на екрану јер 1 није већи од 2)
тест 1 -ле 2 && ецхо "да" || ехо "не"
(приказује "да" на екран јер је 1 мањи или једнак 2)
тест 1 -лт 2 && ецхо "да" || ехо "не"
(приказује "да" на екран јер је 1 мањи или једнак 2)
тест 1 -не 2 && ецхо "да" || ехо "не"
(приказује "да" на екран јер 1 није једнако 2)
Поређење текста
Ако упоређујете елементе који раздвајају низове, можете користити следеће оператере поређења:
- = - да ли је стринг 1 у низу 2
- ! = - је низ 1 различит за низ 2
- -н - је дужина низа већа од 0
- -з - је дужина струне 0
Примери:
тест "стринг1" = "стринг2" && ецхо "да" || ехо "не"
(приказује "не" на екрану јер "стринг1" не одговара "стринг2")
тест "стринг1"! = "стринг2" && ецхо "да" || ехо "не"
(приказује "да" на екран јер "стринг1" није једнак "стринг2")
тест -н "стринг1" && ецхо "да" || ехо "не"
(приказује "да" на екран јер "стринг1" има дужину низа већу од нуле)
тест -з "стринг1" && ецхо "да" || ехо "не"
(приказује "не" на екрану јер "стринг1" има дужина низа већа од нуле)
Упоређивање датотека
Ако упоређујете датотеке, можете користити следеће оператере поређења:
- -еф - Да ли датотеке имају исти број уређаја и иноде (да ли су исти фајл)
- -нт - Да ли је прва датотека новија од друге датотеке
- -от - Прва датотека је старија од друге датотеке
- -б - датотека постоји и блокирана је посебном
- -ц - датотека постоји и карактер је посебан
- -д - датотека постоји и директоријум
- -е - датотека постоји
- -ф - Датотека постоји и редовна је датотека
- -г - датотека постоји и има наведени број групе
- -Г - Датотека постоји и власник је корисничка група
- -х - Датотека постоји и представља симболичну везу
- -к - Датотека постоји и има свој лепљиви бит
- -Л - Исто као и -Х
- -О - Датотека постоји да сте власник
- -п - Датотека постоји и именован је цев
- -р - Датотека постоји и може се читати
- -с - датотека постоји и има величину већу од нуле
- -С - датотека постоји и је сокет
- -т - Дескриптор датотеке се отвара на терминалу
- -у - Датотека постоји и бит сет-усер-ид је подешен
- -в - датотека постоји и може се писати
- -к - Датотека постоји и може се извршити
Примери:
тест / путање / до / филе1 -н / патх / то / филе2 && ецхо "да"
(Ако је датотека1 новија од датотеке2 онда ће се приказати ријеч "да"),
тест -е / путање / до / филе1 && ецхо "да"
(ако постоји датотека1, приказаће се ријеч "да")
тест -О / патх / то / филе1 && ецхо "да"
(ако поседујете датотеку1, онда се приказује ријеч "да")
Терминологија
- Блоцк специал - Датотека је блок уређај, што значи да се подаци читају у блоковима бајтова. Ово су углавном датотеке уређаја као што су чврсти дискови.
- Посебан карактер - Датотека се активира одмах када пишете на њега и најчешће је уређај као што је серијски порт
Упоређивање вишеструких услова
До сада је све упоређивало једну ствар са другом, али шта ако желите да упоредите два услова.
На пример, ако животиња има 4 ноге и иде "моо" вероватно је крава. Једноставно провера 4 ноге не гарантује да имате краву, али проверавате звук који сигурно ради.
Да бисте тестирали оба стања, употребите следећу изјаву:
тест 4-ек 4 -а "моо" = "моо" && ецхо "то је крава" || ехо "то није крава"
Кључни део овде је -а која се залаже и.
Постоји бољи и најчешће коришћени начин извођења истог теста и то је следеће:
тест 4 -ек 4 && тест "моо" = "моо" && ецхо "то је крава" || ехо "то није крава"
Још један тест који желите да урадите је упоређивање две изјаве и ако је тачно излаз стринг. На пример, ако желите да проверите да ли постоји датотека са именом "филе1.ткт" или постоји датотека под називом "филе1.доц", можете користити следећу наредбу
тест -е филе1.ткт -о -е филе1.доц && ецхо "филе1 екистс" || ецхо "датотека1 не постоји"
Кључни део овде је -о што представља или.
Постоји бољи и најчешће коришћени начин извођења истог теста и то је следеће:
тест -е филе1.ткт || тест -е филе1.доц && ецхо "филе1 екистс" || ецхо "датотека1 не постоји"
Елиминисање кључне речи теста
Заиста не морате користити реч тест да бисте извршили упоређивање. Све што треба да урадите је да приложите изјаву у квадратним заградама како слиједи:
[-е филе1.ткт] && ецхо "филе1 екистс" || ецхо "датотека1 не постоји"
[И] у суштини значи исто као и тест.
Сада знате да можете побољшати упоређивање више услова на следећи начин:
[4 -ек 4] && ["моо" = "моо"] && ецхо "то је крава" || ехо "то није крава"
[-е филе1.ткт] || [-е филе1.доц] && ецхо "филе1 екистс" || ецхо "датотека1 не постоји"
Резиме
Команда теста је кориснија у скриптама зато што можете тестирати вредност једне променљиве у односу на други и контролни проток програма. На стандардној командној линији, можете га користити да бисте тестирали да ли постоји датотека или