Како да ги користите условите за тестирање во рамките на баш скрипта

Тестот команда може да се користи на командната линија Линукс за да се спореди еден елемент против друг, но се почесто се користи во BASH-скрипти како дел од условните изјави кои ја контролираат логиката и протокот на програмата.

Основен пример

Можете да ги испробате овие команди едноставно со отворање на терминален прозорец .

тест 1 -eq 2 && ехо "да" || ехо "не"

Горенаведената команда може да се подели на следниов начин:

Во суштина, командата е споредувајќи 1 до 2 и тие се совпаѓаат со ехото, се извршува "yes" изјава која прикажува "да" и ако не се совпаѓаат со ехото "не" изјава се извршува што покажува "не".

Споредба на броеви

Ако ги споредувате елементите што ги разгледувате како броеви можете да ги користите следните оператори за споредба:

Примери:

тест 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)

Споредба на текст

Ако ги споредувате елементите што ги анализираат како стрингови, можете да ги користите следните оператори за споредба:

Примери:

тест "string1" = "string2" && echo "yes" || ехо "не"

(прикажува "не" на екранот бидејќи "string1" не е еднаков на "string2")

тест "string1"! = "string2" && ехо "да" || ехо "не"

(прикажува "да" на екранот бидејќи "string1" не е еднаков на "string2")

test-n "string1" && echo "yes" || ехо "не"

(прикажува "да" на екранот, бидејќи "string1" има должина на стринг поголема од нула)

test -z "string1" && echo "yes" || ехо "не"

(прикажува "не" на екранот бидејќи "string1" има должина на низа поголема од нула)

Споредба на датотеки

Ако ги споредувате датотеките можете да ги користите следните оператори за споредба:

Примери:

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 не постои"

Резиме

Командата за тестирање е покорисна во скрипти, бидејќи можете да ја тестирате вредноста на една променлива од друга и проток на програма за контрола. На стандардната командна линија, можете да ја користите за да проверите дали постои датотека или