ఈ ట్యుటోరియల్లో, షెల్ స్క్రిప్ట్లలో ఉపయోగించే రెండు అత్యంత ఉపయోగకరమైన బాష్ విస్తరణలను మేము వివరిస్తాము:
- $ () - కమాండ్ ప్రత్యామ్నాయం
- $ {} - పరామితి ప్రత్యామ్నాయం/వేరియబుల్ విస్తరణ
టోకెన్లుగా విభజించిన తర్వాత స్క్రిప్ట్పై షెల్లో విస్తరణ జరుగుతుంది. టోకెన్ అనేది షెల్ ద్వారా ఒకే యూనిట్గా పరిగణించబడే అక్షరాల క్రమం. ఇది పదం లేదా ఆపరేటర్ కావచ్చు.
డెబియన్ 10 బస్టర్ సిస్టమ్లో ఈ కథనంలో పేర్కొన్న అన్ని ఉదాహరణలు మరియు స్క్రిప్ట్లను మేము అమలు చేసాము. అయితే, మీరు వాటిని చాలా లైనక్స్ షెల్లపై సులభంగా ప్రతిబింబించవచ్చు. మేము ఈ ట్యుటోరియల్ కోసం డిఫాల్ట్ డెబియన్ కమాండ్ లైన్, టెర్మినల్ను ఉపయోగిస్తున్నాము. డెబియన్లో, మీరు అప్లికేషన్ లాంచర్ సెర్చ్ బార్ ద్వారా ఈ క్రింది విధంగా యాక్సెస్ చేయవచ్చు:
అప్లికేషన్ లాంచర్ను యాక్సెస్ చేయడానికి, మీ కీబోర్డ్లోని సూపర్/విండోస్ కీని నొక్కండి.
$ () కమాండ్ ప్రత్యామ్నాయం
అధికారిక GNU బాష్ రిఫరెన్స్ మాన్యువల్ ప్రకారం:
కమాండ్ ప్రత్యామ్నాయం కమాండ్ని భర్తీ చేయడానికి కమాండ్ యొక్క అవుట్పుట్ను అనుమతిస్తుంది. బాష్ కమాండ్ను అమలు చేయడం ద్వారా మరియు కమాండ్ ప్రత్యామ్నాయాన్ని కమాండ్ యొక్క ప్రామాణిక అవుట్పుట్తో భర్తీ చేయడం ద్వారా, ఏదైనా వెనుకంజలో ఉన్న కొత్త లైన్లను తొలగించడం ద్వారా విస్తరణను నిర్వహిస్తుంది. పొందుపరిచిన కొత్త లైన్లు తొలగించబడలేదు, కానీ పద విభజన సమయంలో అవి తీసివేయబడవచ్చు. కింది విధంగా కమాండ్ జతచేయబడినప్పుడు కమాండ్ ప్రత్యామ్నాయం జరుగుతుంది:
$(కమాండ్)లేదా
'కమాండ్'
ఉదాహరణకు, కింది ప్రతిధ్వని ఆదేశాలు తేదీ ఆదేశం యొక్క అవుట్పుట్ను వాటి ఇన్పుట్గా భర్తీ చేస్తాయి:
$బయటకు విసిరారు$(తేదీ)$బయటకు విసిరారు'తేదీ'
వేరియబుల్ విలువను కేటాయించడానికి మీరు కమాండ్ ప్రత్యామ్నాయాన్ని కూడా ఉపయోగించవచ్చు. ఉదాహరణకు, మేము నేటి తేదీని వేరియబుల్ టుడే ద్వారా ఈ క్రింది విధంగా ప్రింట్ చేస్తాము:
$నేడు= $(తేదీ)$బయటకు విసిరారు '$ టుడే'
కమాండ్ ప్రత్యామ్నాయం యొక్క మరొక ప్రయోజనం ఇన్పుట్ పొందడానికి షెల్ లూప్లలో ఉంది. ఇక్కడ, కమాండ్ ప్రత్యామ్నాయాన్ని ఉపయోగించి మా హోమ్ ఫోల్డర్లోని అన్ని .txt ఫైల్లను ప్రింట్ చేయడానికి ప్రయత్నిస్తాము:
కోసంfలో /ఇంటికి/నీకు/ *.పదముచేయండి
బయటకు విసిరారు '$ f'
పూర్తి
షెల్ స్క్రిప్ట్లో కమాండ్ ప్రత్యామ్నాయాన్ని ఉపయోగించడం
మీ షెల్ స్క్రిప్ట్లో కమాండ్ ప్రత్యామ్నాయం యొక్క శక్తిని మీరు ఉపయోగించుకునే కొన్ని మార్గాలు పై ఉదాహరణలు. కింది షెల్ స్క్రిప్ట్ ఉపయోగించి మేము ముద్రించగల నమూనా స్థితి నివేదిక ఇక్కడ ఉంది:
#!/బిన్/shబయటకు విసిరారు ***స్థితి నివేదిక***
నేడు= $(తేదీ)
బయటకు విసిరారు 'నేడు$ టుడే'
USERS= $(who | wc-ది)
బయటకు విసిరారు '$ USERSవినియోగదారులు ప్రస్తుతం లాగిన్ అయ్యారు '
UPTIME= $(తేదీ;సమయము)
బయటకు విసిరారు 'సమయ సమయం ఉంది$ UPTIME'
కమాండ్ ప్రత్యామ్నాయం ఈ స్క్రిప్ట్లో మూడుసార్లు ఉపయోగించబడింది; తేదీని ముద్రించడంలో, వినియోగదారులు లాగిన్ అయ్యారు మరియు సమయము. మేము స్క్రిప్ట్ను ఈ విధంగా సేవ్ చేసాము:
దీన్ని ఎగ్జిక్యూటబుల్ చేసి, ఆపై కింది ఆదేశం ద్వారా అమలు చేయండి:
$chmod+ x status.sh$/statys.sh
మా status.sh స్క్రిప్ట్ యొక్క అవుట్పుట్ ఇక్కడ ఉంది:
మేము ఇప్పుడే చెప్పిన ఉదాహరణలను అనుసరించడం ద్వారా మీరు మరింత అర్థవంతమైన స్క్రిప్ట్లను సృష్టించవచ్చు.
$ {} పరామితి ప్రత్యామ్నాయం/విస్తరణ
బాష్లోని పరామితి, విలువలను నిల్వ చేయడానికి ఉపయోగించే ఒక సంస్థ. ఒక పారామీటర్ను ఒక సంఖ్య, పేరు లేదా ప్రత్యేక గుర్తు ద్వారా సూచించవచ్చు. ఒక పరామితి ఒక సంఖ్య ద్వారా సూచించబడినప్పుడు, అది a అని పిలువబడుతుంది స్థాన పరామితి . ఒక పారామీటర్ పేరు ద్వారా ప్రస్తావించబడినప్పుడు, దీనిని a అంటారు వేరియబుల్ . ఒక పారామీటర్ని ప్రత్యేక గుర్తు ద్వారా ప్రస్తావించినప్పుడు, అవి ప్రత్యేక ఉపయోగాలతో ఆటోసెట్ పారామితులు అని అర్థం.
పరామితి విస్తరణ/ప్రత్యామ్నాయం ప్రస్తావించబడిన ఎంటిటీ/పరామితి నుండి విలువను పొందే ప్రక్రియ. వేరియబుల్ విలువను పొందడానికి మీరు దానిని విస్తరిస్తున్నట్లుగా ఉంది.
సాధ్యమైనంత సులభమైన పరామితి విస్తరణ వాక్యనిర్మాణం క్రింది విధంగా ఉంది:
మీరు బాష్లో పారామీటర్ విస్తరణను ఎలా ఉపయోగించవచ్చో ఇక్కడ ఉంది:
$ {పరామితి}ఉదాహరణకు, పారామీటర్ను దాని విలువ ద్వారా ప్రత్యామ్నాయం చేయడం అనేది సరళమైన ఉపయోగం:
$పేరు='జాన్ డో'$బయటకు విసిరారు $ {name}
ఈ ఆదేశం ఎకో కమాండ్ ద్వారా ఉపయోగించాల్సిన వేరియబుల్ పేరు విలువను భర్తీ చేస్తుంది:
కింది విధంగా గిరజాల బ్రేస్లను నివారించడం ద్వారా అదే సాధించవచ్చని మీరు ఆలోచిస్తూ ఉండవచ్చు:
సమాధానం ఏమిటంటే, పరామితి విస్తరణ సమయంలో, ఈ గిరజాల కలుపులు వేరియబుల్ పేరును డీలిమిట్ చేయడంలో సహాయపడతాయి. ఇక్కడ పరిమితం చేయడం ద్వారా మేము అర్థం ఏమిటో వివరిద్దాం. నా సిస్టమ్లో కింది ఆదేశాన్ని అమలు చేస్తాను:
$బయటకు విసిరారు 'ఆ వ్యక్తి పేరు$ name_'నేను వేరియబుల్ name_ ని సూచిస్తున్నట్లు సిస్టమ్ భావించినందున ఫలితం వేరియబుల్ పేరు విలువను ముద్రించలేదు. అందువలన, నా వేరియబుల్ పేరు వేరు చేయబడలేదు. కింది ఉదాహరణలోని గిరజాల బ్రేస్లు వేరియబుల్ పేరును డీలిమిట్ చేస్తాయి మరియు ఫలితాలను క్రింది విధంగా అందిస్తుంది:
$బయటకు విసిరారు 'ఆ వ్యక్తి పేరు$ {name}_ 'షెల్లో వేరియబుల్స్ ప్రత్యామ్నాయంగా ఉండే అన్ని మార్గాలు ఇక్కడ ఉన్నాయి:
$ {వేరియబుల్} | ఈ ఆదేశం వేరియబుల్ విలువను ప్రత్యామ్నాయం చేస్తుంది. |
$ {వేరియబుల్: -word} | ఒక వేరియబుల్ శూన్యంగా ఉంటే లేదా అది సెట్ చేయకపోతే, వేరియబుల్ కోసం పదం ప్రత్యామ్నాయం చేయబడుతుంది. వేరియబుల్ విలువ మారదు. |
$ {వేరియబుల్: = పద} | వేరియబుల్ శూన్యమైతే లేదా సెట్ చేయకపోతే, వేరియబుల్ విలువ వర్డ్కి సెట్ చేయబడుతుంది. |
$ {వేరియబుల్:? సందేశం} | వేరియబుల్ శూన్యంగా ఉంటే లేదా అది సెట్ చేయకపోతే, సందేశం ప్రామాణిక బాష్ లోపానికి ముద్రించబడుతుంది. |
$ {వేరియబుల్:+పదం} | ఒకవేళ వేరియబుల్ సెట్ చేయబడింది, పదం వేరియబుల్ కోసం ప్రత్యామ్నాయం. అయితే, వేరియబుల్ విలువ మారదు. |
పై ఉదాహరణలు బాష్లో వేరియబుల్ ప్రత్యామ్నాయం యొక్క శక్తిని మీరు ఉపయోగించుకునే కొన్ని మార్గాలు. చేతిలో ఉన్న మీ పనిని ఉత్తమంగా సాధించడానికి మీ షెల్ స్క్రిప్ట్లలో విస్తరణను ఉపయోగించడానికి మీరు ఈ మార్గాలను చేర్చవచ్చు.