Роҳнамои навтарин барои машғулият - муқоисаи чизҳо

01. 08

Роҳнамои навтарин барои машғулият - муқоисаи чизҳо

Омӯзиши BASH - Тӯҳфаҳои муқоисавӣ.

Дар қисми пешинаи омӯзиши BASH мо ба шартҳои шартӣ назар кардем.

Дастури мазкур хеле тӯлонӣ буд, аммо дар ҳақиқат танҳо чӣ гуна назорат кардани ҷараёни мантиқӣ нишон дод. Ин дастур нишон медиҳад, ки роҳҳои гуногун, ки дар он шумо метавонед тағйирёбандаҳоро муқоиса кунед.

Сурати дар боло нишон додашуда мисоли якум дар ин дастури ҳафта нишон медиҳад:

#! / bin / bash

name1 = "gary"
name2 = "bob"

агар ["$ name1" = "name2"]
сипас
echo "матни ном"
дигар
echo "номҳо мувофиқат намекунанд"
ш


Дар скриптори дар боло номбаршуда ду тағйирёбанда номи номи1 ва номро2 муайян намуда, ба онҳо арзишҳои "gary" ва "bob" -ро додаанд. Азбаски тағйирёбандаҳо дар байни нишонаҳои quotation онҳо ҳастанд, ки онҳо тағйирёбандаи сатр номида мешаванд, ки дар он тавре, ки омӯзиш мегузарад, бештар мувофиқат мекунад.

Ҳамаи скрипт ба арзиши $11 ва $ name2 муқоиса карда, онҳо бо сатри "номҳо ном" мувофиқат мекунанд ва агар онҳо "номҳо мувофиқат накунанд" -ро пахш накунанд.

Нишондиҳандаҳои атроф дар атрофи $1 ва $2 ба тағйирёбии номҳо аҳамияти калон доранд, зеро агар арзиши яке аз онҳо муқаррар нашуда бошад, пас скрипт ҳам кор мекунад.

Масалан агар $ name1 ҳеҷ гоҳ таъин нашуда бошад, шумо бо "боб" муқоиса карда метавонед. Бе номгӯи аломатҳои шумо бо = "боб", ки бевосита аз даст мераванд, мемонанд.

Шумо инчунин метавонед! * Нишондиҳандаҳоеро муайян кунед, ки ин тавр нест:

агар ["$ name1"! = "name2"]

02 аз 08

Роҳнамои навтарин барои Механикӣ - Рақамҳои муқоисавӣ

Омӯзиши BASH - Тӯҳфаҳои муқоисавӣ.

Дар мисоли дар боло овардашуда, санҷиш ба ду сатри дуюм баробар аст ва аз саволе,

Равшан аст, ки ҷавоб нест.

Савол камтар аз оператори ҷорӣ (<). Тавре, ки камтар аз оператори он низ барои тағирёбанда истифода мешавад, шумо бояд бо тасвири (\) барои он камтар аз он истифода баред, ки чаро дар дастгоҳи дар боло зикршуда ман "$ name1" \ "$ name2" муқоиса кардаед.

Дар муқоиса бо камтар аз он, ки назар ба он бузургтар аст. Ба ҷои истифода бурдани >.

Барои намуна

агар ["$ name1" \> "name2"]

03 аз 08

Роҳнамои навтарин барои Механикӣ - Рақамҳои муқоисавӣ

Омӯзиши BASH - Тӯҳфаҳои муқоисавӣ.

Агар шумо хоҳед, ки санҷиши оё тағироте дошта бошед, шумо метавонед имкони истифода бурдани инҳоро истифода баред:

Агар [-n $ name2]

Дар коди дар боло зикршуда, ман санҷидам, ки оё $ 2 ба арзиши додашуда дода шудааст ва агар он папа набошад, "Боб вуҷуд надорад, ҳеҷ гоҳ намефаҳмед".

04 аз 08

Роҳнамои навтарин барои Механикӣ - Рақамҳои муқоисавӣ

Омӯзиши BASH - Тӯҳфаҳои муқоисавӣ.

Дар слайди пештара мо ба он ишора кардем, ки оё тағйирёбанда ё не. Баъзан ҳарчанд тағироте муқаррар карда мешавад, аммо он метавонад дар ҳақиқат арзиши дошта бошад.

Масалан:

name1 = ""

Барои санҷидани оё тағйирёбанда ва ё не (яъне дарозии сифр) -ро истифода барад:

Агар [-z $ name1]

Дар скриптори дар боло буда ман номати $1 -ро ба сатри дарозии сифр муқаррар намуда, сипас онро бо истифода аз -z муқоиса менамоем. Агар номии $ 1 ба сифр баробар аст, мактуб "gary барои шом баромад" хоҳад шуд.

Садо Ояндасоз

Роҳнамои сарнавиштсоз барои BASH - рақамҳои муқоиса

Омӯзиши BASH - Рақамҳои муқоисавӣ.

Ҳамин тариқ, ҳамаи муқоисаҳо барои хатҳо буданд. Дар муқоиса бо рақамҳо чӣ гуна аст?

Дар сутуни боло намунаи муқоисаи ду рақам нишон дода шудааст:

#! / bin / bash

a = 4
b = 5

агар [$ a = $ b]
сипас
echo "4 = 5"
дигар
echo "4 ба 5 баробар нест"
ш

Барои таъин кардани як сатр, ки рақами оддии онро бе нишонаҳои нохунак муқаррар созед. Пас шумо метавонед рақамҳоро бо аломати баробар муқоиса кунед.

Вале ман мехоҳам, ки ду рақамро муқоиса кунам:

Агар [$ a -eq $ b]

06 аз 08

Роҳнамои сарнавиштсоз барои BASH - рақамҳои муқоиса

Омӯзиши BASH - Рақамҳои муқоисавӣ.

Агар шумо хоҳед, ки рақам аз рақами дигар камтар бошад, шумо метавонед камтар аз оператори (<) истифода баред. Тавре, ки бо сутунҳо шумо бояд аз камтар аз оператори бо пружин гурезед. (\ <).

Роҳи беҳтарини муқоиса кардани рақамҳо инҳоянд:

Барои намуна:

Агар [$ a -lt $ b]

Агар [$ a -le $ b]

Агар [$ a -ge $ b]

Агар [$ a -gt $ b]

07 аз 08

Роҳнамои сарнавиштсоз барои BASH - рақамҳои муқоиса

Омӯзиши BASH - Рақамҳои муқоисавӣ.

Ниҳоят барои ин дастур, агар шумо хоҳед, ки санҷиши оёти ду рақамро фароҳам оред, шумо метавонед аз якчанд операторон якҷоя истифода баред (<>) ё:

Агар [$ a <> $ b]

Агар [$ a -ne $ b]

08 аз 08

Роҳнамои навтарин барои коркард - Нишондиҳандаҳои муқоисавӣ - Натиҷа

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

Дар қисмати навбатии дастурам ман арифметикиро муҳофизат хоҳам кард.