బాష్ స్క్రిప్ట్‌లో కమాండ్ లైన్ వాదనలను ఎలా నిర్వహించాలి

How Handle Command Line Arguments Bash Script



అనేక సందర్భాల్లో, స్క్రిప్ట్‌కు ఇన్‌పుట్ ఎంపికలను అందించడానికి బాష్ స్క్రిప్ట్‌లకు ఆర్గ్యుమెంట్ విలువలు అవసరం. మీరు బాష్ స్క్రిప్ట్‌లో కమాండ్ లైన్ ఆర్గ్యుమెంట్‌లను రెండు విధాలుగా నిర్వహించవచ్చు. ఒకటి ఉపయోగించడం ద్వారా ఆర్గ్యుమెంట్ వేరియబుల్స్ మరియు మరొకటి ఉపయోగించడం ద్వారా గెటాప్‌లు ఫంక్షన్ మీరు కమాండ్ లైన్ ఆర్గ్యుమెంట్‌లను ఎలా నిర్వహించగలరో ఈ ట్యుటోరియల్‌లో చూపబడింది.

ఆర్గ్యుమెంట్ వేరియబుల్స్ ఉపయోగించి:

ఆర్గ్యుమెంట్ వేరియబుల్ $ 0 నుండి మొదలవుతుంది. ప్రధాన స్క్రిప్ట్ ఫైల్ పేరు $ 0 లో నిల్వ చేయబడుతుంది, ఇది కమాండ్ లైన్ ఆర్గ్యుమెంట్‌ల నుండి ఆర్గ్యుమెంట్ విలువలను అందుకుంటుంది. కమాండ్ లైన్‌లో రెండు ఆర్గ్యుమెంట్‌లు పాస్ అయితే ఆర్గ్యుమెంట్ విలువలు వరుసగా $ 1 మరియు $ 2 వేరియబుల్స్‌లో అందుతాయి.







ఉదాహరణ -1: మూడు సంఖ్యా విలువలను వాదనలుగా పంపుతోంది

ఒక బాష్ ఫైల్‌ను సృష్టించి, కింది కోడ్‌ని జోడించండి. స్క్రిప్ట్ మూడు ఆర్గ్యుమెంట్ విలువలను అందుకుంటుంది మరియు $ 1, $ 2 మరియు $ 3 లో స్టోర్ చేస్తుంది. ఇది మొత్తం వాదనలు, లూప్‌తో మరియు లూప్ లేకుండా వాదన విలువలను ప్రింట్ చేస్తుంది. చివరగా, అన్ని ఆర్గ్యుమెంట్ విలువల మొత్తాన్ని ముద్రించండి.



#!/బిన్/బాష్

# మొత్తం ఆర్గ్యుమెంట్‌ల లెక్కింపు
బయటకు విసిరారు 'వాదనల మొత్తం సంఖ్య: $#'

# వాదన విలువలను వ్యక్తిగతంగా చదవడం
బయటకు విసిరారు 'మొదటి ఆర్గ్యుమెంట్ విలువ: $ 1'
బయటకు విసిరారు రెండవ వాదన విలువ: $ 2 '
బయటకు విసిరారు 'మూడవ వాదన విలువ: $ 3'

# లూప్ ఉపయోగించి వాదన విలువలను చదవడం
కోసంఆర్గ్వాల్లో '[ఇమెయిల్ రక్షించబడింది]'
చేయండి
బయటకు విసిరారు -n '$ argval'
పూర్తి

# ఆర్గ్యుమెంట్ విలువలను జోడిస్తోంది
మొత్తం= $(($ 1+$ 2+$ 3))

# ఫలితాన్ని ముద్రించండి
బయటకు విసిరారు -మరియు ' nమొత్తం =$ మొత్తం'

మూడు సంఖ్యా వాదన విలువలతో బాష్ ఫైల్‌ను అమలు చేయండి.



$బాష్cmdline1.shయాభై 35 పదిహేను





ఉదాహరణ -2: ఫైల్ పేరును ఆర్గ్యుమెంట్‌గా తీసుకోవడం

ఏదైనా ఫైల్ యొక్క మొత్తం అక్షరాల సంఖ్యను లెక్కించడానికి బాష్ ఫైల్‌ను సృష్టించండి మరియు కింది కోడ్‌ను జోడించండి. ఇక్కడ, ఫైల్ పేరు కమాండ్ లైన్ ఆర్గ్యుమెంట్‌గా పంపబడుతుంది.

#!/బిన్/బాష్
ఫైల్ పేరు=$ 1
టోటల్చార్='wc -సి $ ఫైల్ పేరు'
బయటకు విసిరారు 'అక్షరాల మొత్తం సంఖ్య$ టోటల్‌చార్'

సింగిల్ ఆర్గ్యుమెంట్ విలువగా ఫైల్ పేరుతో బాష్ స్క్రిప్ట్‌ను అమలు చేయండి మరియు ఆ ఫైల్ యొక్క మొత్తం అక్షరాల సంఖ్యను తనిఖీ చేయడానికి మరొక ఆదేశాన్ని అమలు చేయండి. ఇక్కడ, ఉద్యోగి. Txt ఫైల్ ఆర్గ్యుమెంట్ విలువగా ఉపయోగించబడుతుంది. ఉద్యోగి.టెక్స్ట్ ఫైల్ యొక్క మొత్తం అక్షరాల సంఖ్య 204.



$బాష్cmdline2.sh ఉద్యోగి. txt
$wc -సిఉద్యోగి. టెక్స్ట్

గెటాప్ట్స్ ఫంక్షన్‌ను ఉపయోగించడం:

మీరు డేటాబేస్ లేదా ఏదైనా ఫైల్‌లో డేటాను నిల్వ చేయాలనుకుంటే లేదా కమాండ్ లైన్ ఆర్గ్యుమెంట్స్ విలువల ఆధారంగా నిర్దిష్ట ఫార్మాట్‌లో నివేదికను సృష్టించాలనుకుంటే గెటాప్‌లు పని చేయడానికి ఫంక్షన్ ఉత్తమ ఎంపిక. ఇది అంతర్నిర్మిత లైనక్స్ ఫంక్షన్. కాబట్టి, కమాండ్ లైన్ నుండి ఫార్మాట్ చేయబడిన డేటాను చదవడానికి మీరు మీ ఫంక్షన్‌లో ఈ ఫంక్షన్‌ను సులభంగా ఉపయోగించవచ్చు.

ఉదాహరణ -1: గెటోప్ట్స్ ఫంక్షన్ ద్వారా వాదనలు చదవడం

బాష్ ఫైల్‌ను సృష్టించి, ఉపయోగం గురించి అర్థం చేసుకోవడానికి క్రింది స్క్రిప్ట్‌ను జోడించండి గెటాప్‌లు ఫంక్షన్ కమాండ్ లైన్ ఆర్గ్యుమెంట్ ఎంపికలు మరియు ఆర్గ్యుమెంట్ విలువలను చదవడానికి లూప్‌తో 'గెటోప్ట్స్' ఫంక్షన్ ఉపయోగించబడుతుంది. ఇక్కడ, 4 ఎంపికలు ఉపయోగించబడతాయి 'I', 'n', 'm' మరియు 'మరియు' . కేస్ స్టేట్‌మెంట్ నిర్దిష్ట ఎంపికను సరిపోల్చడానికి మరియు ఆర్గ్యుమెంట్ విలువను వేరియబుల్‌లో స్టోర్ చేయడానికి ఉపయోగించబడుతుంది. చివరగా, వేరియబుల్ విలువలను ముద్రించండి.

#!/బిన్/బాష్
అయితే గెటాప్‌లు ':నాలో:'కోపం;చేయండి
కేసు $ ఆర్గ్ లో
i) ID=$ OPTARG;;
ఎన్) పేరు=$ OPTARG;;
m) తయారయిన తేది=$ OPTARG;;
మరియు) గడువు_తేదీ=$ OPTARG;;
esac
పూర్తి
బయటకు విసిరారు -మరియు ' n$ ID $ పేరు $ Manufacturing_date $ Expire_date n'

కింది ఎంపికలు మరియు ఆర్గ్యుమెంట్ విలువలతో ఫైల్‌ని రన్ చేయండి. ఇక్కడ, p100 అనేది -i ఎంపిక విలువ, 'హాట్ కేక్' అనేది -n ఎంపిక విలువ, '01 -01-2018 --m ఎంపిక విలువ మరియు '06 -01-2018 ′ విలువ - ఇ ఎంపిక.

$బాష్cmdline3.sh-ఐp001-n 'వేడి కేక్' -m '01 -01-2018 ' -మరియు '06 -01-2018 '

మీరు స్క్రిప్ట్‌లో సాధారణ విలువలను పంపాల్సిన అవసరం వచ్చినప్పుడు ఆర్గ్యుమెంట్ వేరియబుల్స్ ఉపయోగించడం మంచిది. కానీ మీరు డేటాను ఫార్మాట్ చేసిన విధంగా పంపాలనుకుంటే ఆర్గ్యుమెంట్ విలువలను తిరిగి పొందడానికి getopts ఫంక్షన్‌ని ఉపయోగించడం ఉత్తమం. మరింత సమాచారం కోసం చూడండి వీడియో !