Тестот команда може да се користи на командната линија Линукс за да се спореди еден елемент против друг, но се почесто се користи во BASH-скрипти како дел од условните изјави кои ја контролираат логиката и протокот на програмата.
Основен пример
Можете да ги испробате овие команди едноставно со отворање на терминален прозорец .
тест 1 -eq 2 && ехо "да" || ехо "не"
Горенаведената команда може да се подели на следниов начин:
- тест - тоа значи дека ќе направите споредба
- 1 - првиот елемент што ќе го споредите
- -eq (како се споредува, во овој случај, проверувате дали еден број е еднаков на друг)
- 2 - елементот што го споредувате првиот елемент повторно
- && - извршете ја следнава изјава ако резултатот е точно
- echo "yes" - командата за извршување ако споредбата се врати точно
- || - извршете ја следнава изјава ако резултатот е неточно
- echo "no" - команда за да се изврши ако споредбата се врати лажно
Во суштина, командата е споредувајќи 1 до 2 и тие се совпаѓаат со ехото, се извршува "yes" изјава која прикажува "да" и ако не се совпаѓаат со ехото "не" изјава се извршува што покажува "не".
Споредба на броеви
Ако ги споредувате елементите што ги разгледувате како броеви можете да ги користите следните оператори за споредба:
- -eq - прави вредност 1 еднаква вредност 2
- -ge - е вредност 1 поголема или еднаква на вредност 2
- -gt - е вредност 1 поголема од вредноста 2
- -Le - вредност 1 е помала или еднаква на вредност 2
- -lt - вредност 1 е помала од вредноста 2
- -не - дали вредноста 1 не е еднаква вредност 2
Примери:
тест 1 -eq 2 && ехо "да" || ехо "не"
(прикажува "не" на екранот бидејќи 1 не е еднаков 2)
тест 1-горе 2 && ехо "да" || ехо "не"
(прикажува "не" на екранот бидејќи 1 не е поголем или еднаков на 2)
тест 1 -gt 2 && ехо "да" || ехо "не"
(прикажува "не" на екранот бидејќи 1 не е поголем од 2)
тест 1 -le 2 && ехо "да" || ехо "не"
(прикажува "да" на екранот, бидејќи 1 е помал или еднаков на 2)
тест 1 -lt 2 && echo "yes" || ехо "не"
(прикажува "да" на екранот, бидејќи 1 е помал или еднаков на 2)
тест 1-не 2 && ехо "да" || ехо "не"
(прикажува "да" на екранот бидејќи 1 не е еднаков 2)
Споредба на текст
Ако ги споредувате елементите што ги анализираат како стрингови, можете да ги користите следните оператори за споредба:
- = - дали низата од стринг 1 од низата 2
- ! = - е низа 1 различна од низата 2
- -n - е должината на низата поголема од 0
- -z - е должината на низата 0
Примери:
тест "string1" = "string2" && echo "yes" || ехо "не"
(прикажува "не" на екранот бидејќи "string1" не е еднаков на "string2")
тест "string1"! = "string2" && ехо "да" || ехо "не"
(прикажува "да" на екранот бидејќи "string1" не е еднаков на "string2")
test-n "string1" && echo "yes" || ехо "не"
(прикажува "да" на екранот, бидејќи "string1" има должина на стринг поголема од нула)
test -z "string1" && echo "yes" || ехо "не"
(прикажува "не" на екранот бидејќи "string1" има должина на низа поголема од нула)
Споредба на датотеки
Ако ги споредувате датотеките можете да ги користите следните оператори за споредба:
- -ef - Дали датотеките имаат ист број на икони (дали се исти датотеки)
- -nt - Дали првата датотека е понова од втората датотека
- -ot - Дали првата датотека е постара од втората датотека
- -b - Датотеката постои и е посебна блок
- -c - Датотеката постои и е карактер посебен
- -d - Датотеката постои и е директориум
- -e - Датотеката постои
- -f - Датотеката постои и е редовна датотека
- -g - Датотеката постои и го има наведениот број на групата
- -G - Датотеката постои и сопственик на групата на корисникот
- -h - Датотеката постои и е симболичка врска
- -k - Датотеката постои и има свој лептен бит
- -L - Исто како и -Х
- -O - Датотеката постои Вие сте сопственик
- -p - Датотеката постои и е именувана цевка
- -r - Датотеката постои и е читлива
- -s - Датотеката постои и има големина поголема од нула
- -S - Датотеката постои и е приклучок
- -t - Дескриптор на датотека се отвора на терминал
- -u - Датотеката постои и битот-set-user-id е поставен
- -w - Датотеката постои и може да се запише
- -x - Датотеката постои и е извршна
Примери:
test / path / to / file1-n / path / to / file2 && ехо "Да"
(Ако датотеката1 е понова од датотеката2 тогаш ќе се прикаже зборот "да")
test -e / path / to / file1 && ехо "да"
(ако постои датотека1 ќе се прикаже зборот "да")
тест -О / path / to / file1 && ехо "да"
(ако имате датотека1 тогаш се прикажува зборот "да")
Терминологија
- Блокирај посебно - Датотеката е блок уред, што значи дека податоците се читаат во блокови од бајти. Ова се обично датотеки на уредот, како што се хард дискови.
- Карактер посебен - Датотеката е постапена веднаш, кога ќе му пишете и најчесто е уред како што е сериски порт
Споредба на повеќе услови
Досега сѐ е споредувајќи едно нешто против друго, но што ако сакате да ги споредувате двата услови.
На пример, ако едно животно има 4 нозе и оди "Моо" веројатно е крава. Едноставно проверка за 4 нозе не гарантира дека имате крава, но проверете го звукот што сигурно го прави.
За да ги тестирате двата услови одеднаш ја користите следнава изјава:
тест 4-eq 4 -a "moo" = "moo" && echo "тоа е крава" || ехо "не е крава"
Клучниот дел тука е -а која се залага за и.
Постои подобар и почесто користен начин за вршење на истиот тест и тоа е како што следува:
тест 4 -eq 4 && test "moo" = "moo" && echo "тоа е крава" || ехо "не е крава"
Друг тест што би сакале да го направите е споредувањето на две изјави и ако било точно е излез на стринг. На пример, ако сакате да проверите дали постои датотека со име "file1.txt" или постои датотека наречена "file1.doc", можете да ја користите следнава команда
test -e file1.txt -o -e file1.doc && echo "file1 exists" || ехо "датотеката1 не постои"
Клучниот дел тука е -о кој се залага за или.
Постои подобар и почесто користен начин за вршење на истиот тест и тоа е како што следува:
test-e file1.txt || test-e file1.doc && echo "file1 exists" || ехо "датотеката1 не постои"
Елиминирање на клучен збор за тестирање
Всушност, не треба да го користите тестот за збор за да ја направите споредбата. Се што треба да направите е да ја приложите изјавата во квадратни загради како што следува:
[-e file1.txt] && echo "file1 exists" || ехо "датотеката1 не постои"
[И] во основа значи ист како тест.
Сега знаете дека ова може да го подобрите при споредување на повеќе услови на следниов начин:
[4-ке 4] && ["moo" = "moo"] && ехо "тоа е крава" || ехо "не е крава"
[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || ехо "датотеката1 не постои"
Резиме
Командата за тестирање е покорисна во скрипти, бидејќи можете да ја тестирате вредноста на една променлива од друга и проток на програма за контрола. На стандардната командна линија, можете да ја користите за да проверите дали постои датотека или