Paano Gamitin ang Kundisyon ng Pagsubok sa loob ng isang Bash Script

Ang utos ng pagsubok ay maaaring gamitin sa linya ng command ng Linux upang ihambing ang isang elemento laban sa isa pang ngunit ito ay mas karaniwang ginagamit sa mga script ng shell ng BASH bilang bahagi ng mga kondisyong pahayag na kumokontrol sa lohika at daloy ng programa.

Isang Pangunahing Halimbawa

Maaari mong subukan ang mga utos na ito sa pamamagitan lamang ng pagbubukas ng terminal window .

test 1 -eq 2 && echo "yes" || echo "no"

Ang utos sa itaas ay maaaring ibasura gaya ng mga sumusunod:

Sa kakanyahan, ang utos ay paghahambing ng 1 hanggang 2 at tumutugma sila sa echo na "yes" na pahayag ay pinaandar na nagpapakita ng "oo" at kung hindi tumutugma ang echo "no" na pahayag ay papatayin na nagpapakita ng "no".

Paghahambing ng Mga Numero

Kung iyong hinahambing ang mga elemento na ma-parse bilang mga numero maaari mong gamitin ang sumusunod na mga operator ng paghahambing:

Mga halimbawa:

test 1 -eq 2 && echo "yes" || echo "no"

(nagpapakita ng "hindi" sa screen dahil 1 ay hindi katumbas 2)

test 1 -ge 2 && echo "yes" || echo "no"

(nagpapakita ng "hindi" sa screen dahil 1 ay hindi mas malaki o katumbas ng 2)

test 1 -gt 2 && echo "yes" || echo "no"

(nagpapakita ng "hindi" sa screen dahil 1 ay hindi mas malaki sa 2)

test 1 -le 2 && echo "yes" || echo "no"

(nagpapakita ng "oo" sa screen dahil 1 ay mas mababa sa o katumbas ng 2)

test 1 -lt 2 && echo "yes" || echo "no"

(nagpapakita ng "oo" sa screen dahil 1 ay mas mababa sa o katumbas ng 2)

test 1 -ne 2 && echo "yes" || echo "no"

(nagpapakita ng "oo" sa screen dahil 1 ay hindi pantay-pantay 2)

Paghahambing ng Teksto

Kung iyong hinahambing ang mga elemento na ma-parse bilang mga string maaari mong gamitin ang sumusunod na mga operator ng paghahambing:

Mga halimbawa:

test "string1" = "string2" && echo "yes" || echo "no"

(nagpapakita ng "hindi" sa screen dahil ang "string1" ay hindi katumbas ng "string2")

test "string1"! = "string2" && echo "yes" || echo "no"

(nagpapakita ng "oo" sa screen dahil ang "string1" ay hindi katumbas ng "string2")

test -n "string1" && echo "yes" || echo "no"

(nagpapakita ng "oo" sa screen dahil ang "string1" ay may haba ng string na mas malaki kaysa sa zero)

test -z "string1" && echo "yes" || echo "no"

(nagpapakita ng "hindi" sa screen dahil ang "string1" ay may haba ng string na mas malaki kaysa sa zero)

Paghahambing ng mga File

Kung ikaw ay naghahambing ng mga file maaari mong gamitin ang sumusunod na mga operator ng paghahambing:

Mga halimbawa:

test / path / to / file1 -n / path / to / file2 && echo "yes"

(Kung ang file1 ay mas bago kaysa file2 pagkatapos ang salitang "oo" ay ipapakita)

test -e / path / to / file1 && echo "yes"

(kung ang file1 ay may salitang "oo" ay ipapakita)

test -O / path / to / file1 && echo "yes"

(kung mayroon kang file1 pagkatapos ang salitang "oo" ay ipinapakita ")

Terminolohiya

Paghahambing ng Maramihang Kondisyon

Sa ngayon ang lahat ay nagkukumpara ng isang bagay laban sa isa pang ngunit kung ano kung nais mong ihambing ang dalawang kondisyon.

Halimbawa, kung ang isang hayop ay may 4 na binti at napupunta ang "moo" marahil ito ay isang baka. Ang pagsuri lamang para sa 4 na binti ay hindi ginagarantiyahan na mayroon kang isang baka ngunit sinusuri ang tunog na ito ay tiyak na ginagawa.

Upang subukan ang parehong mga kondisyon nang sabay-sabay gamitin ang sumusunod na pahayag:

test 4 -eq 4 -a "moo" = "moo" && echo "it's a cow" || echo "ito ay hindi isang baka"

Ang pangunahing bahagi dito ay ang-na kung saan ay kumakatawan sa at.

Mayroong isang mas mahusay at mas karaniwang ginagamit na paraan ng pagsasagawa ng parehong pagsubok at iyon ay ang mga sumusunod:

test 4 -eq 4 && test "moo" = "moo" && echo "ito ay isang baka" || echo "ito ay hindi isang baka"

Ang isa pang pagsubok na gusto mong gawin ay paghahambing ng dalawang pahayag at kung ang alinman ay totoo ang output ng isang string. Halimbawa, kung nais mong suriin na ang isang file na may pangalang "file1.txt" ay umiiral o isang file na tinatawag na "file1.doc" ay umiiral maaari mong gamitin ang sumusunod na command

test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 ay hindi umiiral"

Ang pangunahing bahagi dito ay ang -o na nakatayo para sa o.

Mayroong isang mas mahusay at mas karaniwang ginagamit na paraan ng pagsasagawa ng parehong pagsubok at iyon ay ang mga sumusunod:

test -e file1.txt || test -e file1.doc && echo "file1 exists" || echo "file1 ay hindi umiiral"

Pag-aalis ng Test Keyword

Hindi mo talaga kailangang gamitin ang salitang pagsubok upang maisagawa ang paghahambing. Ang kailangan mo lang gawin ay isama ang pahayag sa mga square bracket tulad ng sumusunod:

[-e file1.txt] && echo "file1 exists" || echo "file1 ay hindi umiiral"

Ang [at] karaniwang nangangahulugang katulad ng pagsubok.

Ngayon alam mo na maaari mong pagbutihin ang paghahambing ng maramihang mga kondisyon tulad ng sumusunod:

[4-aq 4] && ["moo" = "moo"] && echo "ito ay isang baka" || echo "ito ay hindi isang baka"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 ay hindi umiiral"

Buod

Ang command na pagsubok ay mas kapaki-pakinabang sa mga script dahil maaari mong subukan ang halaga ng isang variable laban sa isa pang at kontrolin ang daloy ng programa. Sa standard command line, maaari mo itong gamitin upang subukan kung umiiral ang isang file o