కమాండ్(ల)పై లూప్ చేయడానికి బాష్ స్క్రిప్ట్లో ‘అంత వరకు’ లూప్ని ఉపయోగించడం.
బాష్ (బోర్న్ ఎగైన్ షెల్) అనేది GNU/Linux ఆపరేటింగ్ సిస్టమ్లలో షెల్ కమాండ్ ప్రాంప్ట్ మరియు స్క్రిప్టింగ్ భాష. ఇది చాలా Linux పంపిణీలకు డిఫాల్ట్ షెల్.
చాలా స్క్రిప్టింగ్ భాషల వలె, బాష్ సారూప్య పనులను అనేకసార్లు పునరావృతం చేయడానికి లూప్ సింటాక్స్లను అందిస్తుంది. ఈ ఆర్టికల్లో, మేము ఎలా ఉపయోగించాలో నేర్చుకుంటాము వరకు
బాష్లో లూప్.
పరిచయం
ది వరకు
బాష్లోని లూప్ అనేది మరొక కమాండ్(లు) (కండిషన్ కమాండ్లు) అవుట్పుట్ ఆధారంగా పలుసార్లు కమాండ్(లు) (ఎగ్జిక్యూటెడ్ కమాండ్లు) అమలు చేయడానికి ఉపయోగించబడుతుంది. కండిషన్ కమాండ్ విఫలమయ్యే వరకు ఎక్జిక్యూట్ చేయబడిన కమాండ్లు రన్ అవుతూనే ఉంటాయి (అనగా, సున్నా కాని స్థితిని అందిస్తుంది. Linuxలోని ఏదైనా కమాండ్ సక్సెస్ కోసం 0ని మరియు వైఫల్యం కోసం సున్నా కాని పూర్ణాంకాన్ని అందిస్తుంది). ఇది సరిగ్గా వ్యతిరేకం అయితే
లూప్, దీనిలో కండిషన్ కమాండ్ విజయవంతమయ్యే వరకు అమలు చేయబడిన కమాండ్లు నడుస్తూనే ఉంటాయి.
బహుళ కండిషన్ కమాండ్లు ఉన్నట్లయితే, స్టేట్మెంట్ జాబితాలోని చివరి కమాండ్ యొక్క స్థితిని మాత్రమే పరిగణిస్తుంది, అనగా, జాబితాలోని చివరి కమాండ్ విఫలమయ్యే వరకు లూప్ నడుస్తుంది.
సాధారణ వాక్యనిర్మాణం
కోసం సాధారణ వాక్యనిర్మాణం వరకు
బాష్లోని లూప్:
పూర్తయ్యే వరకు
కండిషన్ కమాండ్ లిస్ట్లోని చివరి కమాండ్ విఫలమయ్యే వరకు ఎగ్జిక్యూట్ కమాండ్ జాబితా నడుస్తుంది. చివరి కమాండ్ విజయవంతం అయిన తర్వాత, లూప్ నిష్క్రమిస్తుంది.
వినియోగదారులు కమాండ్ జాబితాలలో ఏదైనా ఎక్జిక్యూటబుల్ ఫైల్ను పేర్కొనవచ్చు. ఇది ప్రామాణిక Linux ప్రోగ్రామ్లు లేదా అనుకూల వినియోగదారు ప్రోగ్రామ్లు లేదా స్క్రిప్ట్లు కావచ్చు. ప్రతి ఆదేశం కొత్త లైన్లో ఉండాలి లేదా అదే లైన్లో సెమికోలన్తో వేరు చేయబడాలి.
కొన్ని ఉదాహరణలు చూద్దాం.
వేరియబుల్ వరకు లూప్ చేయడం నిర్దిష్ట విలువను కలిగి ఉంటుంది: కింది లూప్ వేరియబుల్ విలువ వరకు అమలు చేస్తుంది x
10 ఉంది.
x=0 వరకు [[ $x -eq 10 ]] ఎకో $x ((x++)) పూర్తయ్యే వరకు
ప్రతి పునరావృతంలో, మేము x విలువ 10 కాదా అని తనిఖీ చేస్తున్నాము. విలువను ఉపయోగించి తనిఖీ చేయబడుతోంది పరీక్ష
ఆదేశం. [[ వ్యక్తీకరణ ]]
పరీక్ష కమాండ్ కోసం వాక్యనిర్మాణం (చూడండి మనిషి పరీక్ష
).
అప్పుడు లోపల చెయ్యి... పూర్తయింది
బ్లాక్ చేయండి, మేము కేవలం x విలువను ప్రింట్ చేస్తాము మరియు దానిని పెంచుతాము. కండిషన్ కమాండ్ విజయవంతం అయిన తర్వాత లూప్ నిష్క్రమిస్తుంది, అనగా ఎప్పుడు $x
సమానముగా 10
.
గమనిక: 'అంత వరకు' లూప్లో ఉపయోగించాల్సిన ఇండెక్స్ వేరియబుల్ను 'అంత వరకు' లూప్కు ముందు లేదా కండిషన్ కమాండ్లలో ప్రారంభించాలి, లూప్కు విరుద్ధంగా, ఇది వేరియబుల్ను పరోక్షంగా ప్రారంభించడాన్ని అనుమతిస్తుంది.
బహుళ షరతుల ఆదేశాలతో: కింది లూప్ పేరుతో 5 డైరెక్టరీలను సృష్టిస్తుంది dir0, dir1, ... dir4
.
z=0 ప్రతిధ్వని "హాయ్" ఎకో "బై" [[ $z -eq 5 ]] ప్రతిధ్వనించే వరకు "dir$z సృష్టిస్తోంది..." mkdir dir$z ((z++)) పూర్తయింది
మొదటి ఆదేశాలు "హాయ్" ప్రతిధ్వని మరియు ప్రతిధ్వని "బై" పూర్తిగా ఒకసారి అమలు చేయబడతాయి; వారి విజయం లేదా వైఫల్యం లూప్ ఎంతకాలం నడుస్తుందనే దానిపై ఎటువంటి ప్రభావం ఉండదు.
అప్పుడు వేరియబుల్ z విలువను తనిఖీ చేయడానికి పరీక్ష కమాండ్ అమలు అవుతుంది. ఈ కమాండ్ విఫలమయ్యే వరకు, అంటే, z విలువ 5 అయ్యే వరకు, కండిషన్ కమాండ్లు మరియు ఎగ్జిక్యూటెడ్ కమాండ్లు క్రమంలో రన్ అవుతూ ఉంటాయి. ఇక్కడ, ప్రతి పునరావృతం కోసం, ఇది మొదట 2 ఎకో కమాండ్లను కండిషన్లో అమలు చేస్తుంది మరియు తర్వాత 3వ కండిషన్ కమాండ్ z విలువ కోసం తనిఖీ చేస్తుంది. అది 5 కాకపోతే, అది లూప్లోకి ప్రవేశించి, ఇచ్చిన ఆదేశాలను అమలు చేస్తుంది.
బ్రేక్ చేసి కొనసాగించండి
షరతులతో కూడిన నిష్క్రమణ కోసం బ్రేక్ స్టేట్మెంట్
మేము షరతులతో కూడిన ప్రకటనను కూడా ఉపయోగించవచ్చు ఉంటే
లూప్ లోపల. ది ఉంటే
ప్రకటనను a తో ఉపయోగించవచ్చు బ్రేక్
లూప్ నుండి షరతులతో కూడిన నిష్క్రమణ కోసం ఒక ప్రకటన.
x=0 [[ $x -eq 10 ]] వరకు [[ $x -eq 5 ]] బ్రేక్ ఫి ఎకో $x ((x++)) పూర్తయితే
లూప్ పైన పేర్కొన్నది 0 నుండి 4 వరకు సంఖ్యలను ముద్రిస్తుంది. ఆ తర్వాత i విలువ 5 అయినప్పుడు, అది లూప్ నుండి బయటపడుతుంది. కమాండ్ నిర్దిష్ట అవుట్పుట్ ఇచ్చినప్పుడు లూప్ నుండి నిష్క్రమించినప్పుడు ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది.
షరతులతో ఒక పునరావృతాన్ని దాటవేయడానికి ప్రకటనను కొనసాగించండి
బాష్ కూడా ఒక కొనసాగుతుంది
ఒక నిర్దిష్ట షరతు సంతృప్తి చెందితే, లూప్లో పునరావృతం యొక్క మిగిలిన భాగాన్ని దాటవేయడానికి ప్రకటన.
x=0 [[ $x -eq 10 ]] వరకు [[ $x -eq 5 ]] కొనసాగితే fi echo $x ((x++)) పూర్తయింది
పై లూప్ 5 మినహా 0 నుండి 10 వరకు సంఖ్యలను ముద్రిస్తుంది, ఎందుకంటే పునరావృతం సమయంలో x=5
కొనసాగింపు స్టేట్మెంట్ ఉంది, ఇది లూప్లోని మిగిలిన కోడ్ను ప్రారంభంలో పునరావృతం చేయడంతో దాటవేస్తుంది x=6
.
లూప్లను ఉపయోగించడం: స్క్రిప్ట్లు మరియు కమాండ్ లైన్
లూప్ సింటాక్స్లను నేరుగా బాష్ షెల్లో లేదా ఎక్జిక్యూటబుల్ షెల్ స్క్రిప్ట్ ఫైల్ నుండి ఉపయోగించవచ్చు. ఒకేలా కోసం
మరియు అయితే
ఉచ్చులు, ఒకసారి ఒక వరకు
లూప్ సింటాక్స్ షెల్పై నమోదు చేయబడింది, లూప్ చేయవలసిన ఆదేశాలను వినియోగదారు కొనసాగించడానికి షెల్ ప్రాంప్ట్ను కొనసాగిస్తుంది.
లేదంటే, వినియోగదారు దీన్ని స్క్రిప్ట్ ఫైల్లో సేవ్ చేయవచ్చు మరియు స్క్రిప్ట్ ఫైల్ను అమలు చేయవచ్చు.
ది #!/బిన్/బాష్
ప్రారంభంలో ఫైల్ అమలు చేయబడినప్పుడు ఉపయోగించాల్సిన ఇంటర్ప్రెటర్ను నిర్దేశిస్తుంది. ఈ రోజుల్లో బాష్ ఎక్కువగా ఉపయోగించే షెల్ అయినప్పటికీ, కొంతమంది వినియోగదారులు షెల్లను ఇష్టపడతారు zsh
, ఈ ఫైల్ ప్రారంభంలో బాష్ స్థానంలో పేర్కొనబడాలి.
అమలు అనుమతులు ఇవ్వడానికి ఈ ఫైల్ కోసం, అమలు చేయండి:
chmod +x test.sh
చివరగా, ఫైల్ను అమలు చేయడానికి, అమలు:
./test.sh
ముగింపు
ది వరకు
బాష్ స్క్రిప్టింగ్లో లూప్ మరొక ముఖ్యమైన లక్షణం. నిర్దిష్ట ప్రోగ్రామ్లు విఫలమైన స్థితిని తిరిగి పొందుతాయని ఆశించినప్పుడు సంక్లిష్ట స్క్రిప్ట్లలో దీనికి ప్రత్యేక ప్రాముఖ్యత ఉంటుంది మరియు వైఫల్యాన్ని లాగ్ చేయడానికి, వివరంగా లోపాన్ని ప్రదర్శించడానికి లేదా కొన్ని ప్రత్యామ్నాయ ప్రోగ్రామ్లను అమలు చేయడానికి కొన్ని ఇతర కమాండ్(లు) అమలు చేయబడాలి.