01 ની 08
પ્રારંભિક માર્ગદર્શિકા માટે માર્ગદર્શન - તુલના વસ્તુઓ
બેશ ટ્યુટોરીયલના અગાઉના ભાગમાં અમે શરતી વિધાનો જોયાં હતાં.
તે માર્ગદર્શિકા ખૂબ જ લાંબી હતી પરંતુ વાસ્તવમાં ફક્ત તર્કના પ્રવાહને કેવી રીતે નિયંત્રિત કરવું તે દર્શાવ્યું હતું. આ માર્ગદર્શિકા વિવિધ રીતો બતાવે છે જેમાં તમે ચલોની તુલના કરી શકો છો.
ઉપરોક્ત છબી આ અઠવાડિયાની માર્ગદર્શિકામાં પ્રથમ ઉદાહરણ બતાવે છે:
#! / bin / bash
name1 = "ગેરી"
name2 = "bob"જો ["$ name1" = "$ name2"]
પછી
ઇકો "નામો મેચ"
બીજું
ઇકો "નામો મેળ ખાતા નથી"
ફાઇ
ઉપર સ્ક્રીપ્ટમાં મેં name1 અને name2 નામની બે ચલો વ્યાખ્યાયિત કર્યા છે અને તેમને "ગેરી" અને "બોબ" મૂલ્યો અસાઇન કર્યા છે. વેરિયેબલ્સ અવતરણ ચિહ્નો વચ્ચે સમાયેલ હોવાથી તેઓ સ્ટ્રિંગ વેરીએબલ તરીકે ઓળખાય છે જે ટ્યુટોરીયલ પર ચાલે છે તે વધુ સુસંગત બને છે.
બધી સ્ક્રિપ્ટ $ name1 અને $ name2 ના મૂલ્યની તુલના કરે છે અને જો તે શબ્દમાળા "નામો મેચ" શબ્દ સાથે મેળ ખાય છે અને જો તેઓ "નામો મેળ ખાતા નથી" શબ્દને આઉટપુટ નથી કરતા.
$ Name1 અને $ name2 વેરિયેબલ્સની અવતરણ ચિન્હ મહત્વપૂર્ણ છે કારણ કે જો તેમાંથી કોઈની કિંમત નક્કી કરવામાં ન આવી હોય તો સ્ક્રિપ્ટ હજી પણ કામ કરશે.
દાખલા તરીકે જો $ name1 ક્યારેય સેટ કરેલું ન હોત તો તમે "bob" થી "" ની સરખામણી કરો છો. અવતરણચિહ્નો વગર તમે છોડી શકો છો = "બૉબ" જે સ્પષ્ટ રૂપે નિષ્ફળ થાય છે.
તમે નીચે પ્રમાણે નહી સમાન વ્યાખ્યાયિત કરવા માટે! = નોટેશનનો ઉપયોગ કરી શકો છો:
જો ["$ name1"! = "$ name2"]
08 થી 08
બેશ માટે માર્ગદર્શિકા - સરખામણી સ્ટ્રીંગ્સ
ઉપરોક્ત ઉદાહરણમાં પરીક્ષણ એ જ બે શબ્દોની સરખામણી કરે છે અને પૂછે છે કે ગેરી મૂળાક્ષરમાં બોબ પહેલાં આવે છે?
સ્પષ્ટપણે જવાબ નથી.
સ્ક્રિપ્ટ ઑપરેટર કરતાં ઓછી (<) રજૂ કરે છે. જેમ ઓપરેટર કરતાં ઓછું રીડાયરેક્શન માટે વાપરવામાં આવે છે તેમ તમારે તેને સ્લેશ (\) સાથે ભાગી રાખવું પડશે કારણ કે તેનાથી ઉપરના સ્ક્રિપ્ટમાં "$ name1" \ "$ name2" \ "$ 2 \" ની તુલના કરવામાં આવી છે.
કરતાં ઓછી કરતાં વિરુદ્ધ દેખીતી રીતે કરતાં વધારે છે. \
દાખ્લા તરીકે
જો ["$ name1" \> "$ name2"]
03 થી 08
બેશ માટે માર્ગદર્શિકા - સરખામણી સ્ટ્રીંગ્સ
જો તમે ચકાસવા માંગતા હો કે વેરિયેબલ વેલ્યુ ધરાવે છે કે તમે નીચેની ટેસ્ટનો ઉપયોગ કરી શકો છો:
જો [-n $ name2]
ઉપરની સ્ક્રીપ્ટમાં મેં પરીક્ષણ કર્યું છે કે $ name2 ને મૂલ્ય આપવામાં આવ્યું છે કે નહીં અને જો તે "ત્યાં કોઈ બૉબ નથી, ત્યાં કોઈ બોબ દેખાતો નથી"
04 ના 08
બેશ માટે માર્ગદર્શિકા - સરખામણી સ્ટ્રીંગ્સ
ભૂતકાળની સ્લાઈડ પર આપણે આવરી લીધેલું છે કે નહીં તે ચલ સુયોજિત છે કે નહિ. કેટલીકવાર ચલ કદાચ સેટ થઈ શકે છે, પરંતુ વાસ્તવમાં મૂલ્ય ન પણ હોય.
દાખલા તરીકે:
name1 = ""
ચકાસવા માટે કે વેરીએબલ મૂલ્ય ધરાવે છે કે નહીં (એટલે કે શૂન્યની લંબાઇ છે) નીચે પ્રમાણે -z નો ઉપયોગ કરો:
જો [-z $ name1]
ઉપર સ્ક્રીપ્ટમાં મેં $ 1 ને શૂન્ય લંબાઈની સ્ટ્રિંગ પર સેટ કરી છે અને ત્યારબાદ -z નો ઉપયોગ કરીને તેની સરખામણી કરી છે. જો $ name1 શૂન્ય લંબાઈમાં હોય તો સંદેશ "સાંજ માટે ગેરી ગયો છે" પ્રદર્શિત થશે.
05 ના 08
બેશ માટે માર્ગદર્શન - સરખામણી નંબર્સ
આમ અત્યાર સુધી તમામ સરખામણીઓ શબ્દમાળાઓ માટે છે. નંબરો સરખામણી વિશે શું?
ઉપરોક્ત સ્ક્રીપ્ટ બે આંકડાઓની તુલનાનું એક ઉદાહરણ બતાવે છે:
#! / bin / bash
a = 4
b = 5જો [$ a = $ b]
પછી
ઇકો "4 = 5"
બીજું
ઇકો "4 બરાબર 5 નથી"
ફાઇ
સંખ્યા કરવા માટે વેરિયેબલને સુયોજિત કરવા માટે તેને ફક્ત અવતરણ ગુણ વિના સેટ કરો. પછી તમે સંખ્યાઓને સમકક્ષ ચિહ્ન સાથે સરખાવી શકો છો.
હું બે નંબરોની તુલના કરવા માટે નીચેના ઓપરેટરનો ઉપયોગ કરવાનું પસંદ કરું છું:
જો [$ a -q $ b]
06 ના 08
બેશ માટે માર્ગદર્શન - સરખામણી નંબર્સ
જો તમે સરખામણી કરો કે કોઈ નંબર બીજા નંબર કરતા ઓછી હોય તો તમે ઓપરેટર કરતા ઓછા (<) નો ઉપયોગ કરી શકો છો. શબ્દમાળાઓ પ્રમાણે તમારે સ્લેશ સાથે ઓપરેટર કરતાં ઓછું ભાગી જવું પડશે. (\ <)
સંખ્યાની સરખામણી કરવા માટેનો એક સારો માર્ગ તેના બદલે નીચેના સંકેતલિંકનો ઉપયોગ કરવાનો છે:
- -lt કરતાં ઓછું
- -લે કરતાં ઓછું અથવા બરાબર
- ગ્રેટર કરતાં વધારે
- ગ્રેન કરતા અથવા તેનાથી બરાબર
દાખ્લા તરીકે:
જો [$ a -lt $ b]
જો [$ a -le $ b]
જો [$ a -ge $ b]
જો [$ a -gt $ b]
07 ની 08
બેશ માટે માર્ગદર્શન - સરખામણી નંબર્સ
છેલ્લે આ માર્ગદર્શિકા માટે, જો તમે ચકાસવા માંગતા હોવ કે બે નંબરો અલગ છે કે તમે ક્યાં તો ઓપરેટરો કરતા ઓછો અને મોટો ઉપયોગ કરી શકો છો (<>) અથવા નીચે પ્રમાણે છે:
જો [$ a <> $ b]
જો [$ a -ne $ b]
08 08
પ્રારંભિક માર્ગદર્શિકા - તુલના ઓપરેટર્સ - સારાંશ માટે માર્ગદર્શન
જો તમે આ માર્ગદર્શિકાના પહેલા ત્રણ ભાગો ચૂકી ગયા હોવ તો તમે નીચેની લિંક્સ પર ક્લિક કરીને તેમને શોધી શકો છો:
માર્ગદર્શિકાના આગળના ભાગમાં હું અંકગણિતને આવરી લેવામાં આવશે.