బాష్ WHILE- లూప్లను వ్రాయడం ఎలా

ఆదేశాలు, సింటాక్స్, మరియు ఉదాహరణలు

మీరు వాటిని స్క్రిప్ట్ ఫైలులోకి వ్రాసి ఆపై అమలు చేయడం ద్వారా ఆదేశాల క్రమాన్ని అమలు చేయవచ్చు.

ఒక స్క్రిప్ట్ ఫైల్ సాధారణంగా ఒక టెక్స్ట్ ఫైల్, సాధారణంగా SH ఫైల్ పొడిగింపుతో ఉంటుంది, ఇది కమాండ్ లైన్ ( షెల్ ) నుండి అమలు చేయగల సూచనల క్రమాన్ని కలిగి ఉంటుంది.

లూప్ ఉదాహరణలు అయితే

క్రింద ఒక సమయంలో లూప్ యొక్క ఒక ఉదాహరణ. అమలు చేయబడినప్పుడు, ఈ స్క్రిప్ట్ ఫైలు తెరపై సంఖ్యలు 1 నుండి 9 ముద్రిస్తుంది. కాగా -లూప్ కన్నా కట్ స్టేట్మెంట్ షరతును పేర్కొనడానికి మీరు ఎక్కువ సమయం ఇవ్వాలనుకుంటున్నారు.

#! / bin / bash count = 1 అయితే [$ count -le 9] ప్రతిధ్వని "$ count" నిద్ర 1 ((count ++)) పూర్తి

ఉదాహరణకు, మునుపటి స్క్రిప్టు అనంతమైన లూప్ను పెంపు ప్రకటనను తొలగించటం ద్వారా చేయవచ్చు ("(count ++))":

#! / bin / bash count = 1 అయితే [$ count -le 9] ప్రతిధ్వని "$ count" నిద్ర 1 పూర్తయింది

"నిద్రా 1" ప్రకటన ప్రతి పునరావృతంలో 1 సెకనుకు అమలు చేయడానికి అంతరాయం కలిగించింది. ప్రక్రియను ముగించడానికి Ctrl + C కీబోర్డ్ సత్వరమార్గాన్ని ఉపయోగించండి.

మీరు ఒక కోలన్ను షరతుగా ఉంచడం ద్వారా అనంత లూప్ని సృష్టించవచ్చు:

#! / bin / bash count = 1 while: echo "$ count" sleep 1 ((count ++)) పూర్తి

బహుళ-పరిస్థితులను ఉపయోగించడానికి-లూప్ లో, మీరు డబుల్ చదరపు బ్రాకెట్ నోటిఫికేషన్ను ఉపయోగించాలి:

లెక్కింపు = 1 పూర్తయింది = 0 అయితే [[$ count -le 9] && [$ done == 0]] [$ లెక్కింపు == 5] అయితే నిద్రలో "$ count" నిద్ర 1 ((count ++)) చేయండి; అప్పుడు $ done = 1 fi పూర్తయింది

ఈ లిపిలో, వేరియబుల్ "పని" 0 కు మొదలయ్యింది మరియు 1 కి లెక్కించినప్పుడు 1 కు అమర్చబడుతుంది. లూప్ స్థితి ప్రకారం "కౌంట్" తొమ్మిది కన్నా తక్కువ మరియు "పూర్తయింది" సున్నాకు. అందువల్ల కౌంట్ 5 కి సమానం అయినప్పుడు ఉచ్చులు బయటకు వస్తాయి.

"&&" అంటే తర్కం "మరియు" మరియు "||" తార్కిక అర్థం "లేదా".

సంయోగాలకు "మరియు" మరియు "లేదా" పరిస్థితులకు ఒక ప్రత్యామ్నాయ సంజ్ఞానం "-a" మరియు "-o" సింగిల్ చదరపు బ్రాకెట్లతో ఉంటుంది. పై పరిస్థితి:

[[$ count -le 9] && [$ done == 0]]

... గా తిరిగి వ్రాయబడుతుంది:

[$ లెక్కింపు -లే 9] -a [$ పూర్తి == 0]

వచన ఫైల్ను చదవడం సాధారణంగా కొంతకాలంతో జరుగుతుంది. ఈ కింది ఉదాహరణనందు, బాష్ స్క్రిప్టు "inventory.txt:" అని పిలువబడే ఒక ఫైల్ యొక్క పంక్తి ద్వారా విషయాలు పంపుతుంది.

FILE = inventory.txt exec 6

మొదటి పంక్తి ఇన్పుట్ ఫైల్ పేరును "FILE" వేరియబుల్కు అప్పగిస్తుంది. రెండవ పంక్తి "ప్రామాణిక ఇన్పుట్" ను ఫైల్ డిస్క్రిప్టర్ "6" లో (ఇది 3 మరియు 9 మధ్య ఏ విలువ అయినా కావచ్చు) కాపాడుతుంది. స్క్రిప్ట్ చివరిలో "0" ను దానికి "ప్రామాణిక ఇన్పుట్" ని పునరుద్ధరించవచ్చు ("కార్యనిర్వాహిక 0 ను చూడండి" 3 వ లైన్ లో ఇన్పుట్ ఫైల్ను "0" అనే ఫైల్ వర్ణనకు కేటాయించారు. ప్రామాణిక ఇన్పుట్ కోసం "రీడ్" స్టేట్మెంట్ అప్పుడు ప్రతి పునరావృత్తిలోని ఫైల్ నుండి ఒక లైన్ చదువుతుంది మరియు దానిని "line1" వేరియబుల్కు అప్పగిస్తుంది.

ముందుగానే-లూప్ను ముందే నిష్క్రమించడానికి, మీరు ఈ విధంగా బ్రేక్ స్టేట్మెంట్ను ఉపయోగించవచ్చు:

count = 1 done = 0 అయితే [$ count -le 9] echo "$ count" నిద్ర 1 ((count ++)) [$ count == 5]

బ్రేక్ స్టేట్మెంట్ చివరికి లూప్ చేస్తున్నప్పుడు ప్రోగ్రామ్ అమలుచేస్తుంది మరియు దాని తరువాత వచ్చిన ఏ ప్రకటనలను అమలు చేస్తుంది. ఈ సందర్భంలో, ప్రకటన "ప్రతిధ్వని ముగిసింది."

కొనసాగే ప్రకటన, మరోవైపు, ప్రస్తుత మళ్ళా యొక్క మిగిలిన సమయంలో లూప్ ప్రకటనను మాత్రమే వదిలివేస్తుంది మరియు తదుపరి మళ్ళాకు నేరుగా వెళ్తుంది:

count = 1 done = 0 అయితే [$ count -le 9] నిద్ర 1 ((+ count ++)) చేస్తే [$ count == 5] అప్పుడు fi echo "$ count"

ఈ సందర్భంలో, "కొనసాగింపు" స్టేట్మెంట్ వేరియబుల్ "కౌంట్" 5 కి చేరినప్పుడు అమలు అవుతుంది. దీనర్థం ఈ ప్రకటన (ఎకో "$ count") అమలు చేయబడదు ("కౌంట్" యొక్క విలువ 5 ఉన్నప్పుడు).