షెల్ స్క్రిప్ట్ లోపల ఆదేశాలను ఎలా అమలు చేయాలి

How Execute Commands From Within Shell Script



బాష్‌లో, షెల్ స్క్రిప్ట్ నుండి ఆదేశాలను అమలు చేయడం మొదట్లో కొద్దిగా భయపెట్టవచ్చు మరియు విశ్వాసం పెరగడం అవసరం కావచ్చు. అన్ని తరువాత, బాష్ స్క్రిప్ట్ లోపల అమలు చేయబడిన ఆదేశాలు ఇంటరాక్టివ్ కాదు. ఆదేశాల గురించి కింది ప్రశ్నలకు సమాధానమిస్తూ షెల్ స్క్రిప్ట్ లోపల ఆదేశాలను అమలు చేయడానికి ఇక్కడ మేము పునాది వేస్తాము: అవి ఎక్కడ నుండి వచ్చాయి? ఏమిటి అవి? మేము వాటిని స్క్రిప్ట్‌లో ఎలా ఉపయోగిస్తాము?

ఆదేశాలు ఎక్కడ నుండి వచ్చాయి?

బాష్‌లోని ఆదేశాలు కింది ఏవైనా కేటగిరీల నుండి వస్తాయి:







బాష్ కూడా (బిల్డిన్‌లను చూడండి)

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



మీ వాతావరణంలో అమలు చేయదగినవి (బాహ్య ఆదేశాలను చూడండి)

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



వినియోగదారు నిర్వచించిన ఫంక్షన్ (విధులు చూడండి)

బాహ్య ఆదేశాలు మరియు బిల్డిన్‌లను అమలు చేయడానికి ముందు, ఒక ఫంక్షన్ నిర్వచించబడితే బాష్ తనిఖీ చేస్తుంది. ఒకవేళ ఫంక్షన్ కమాండ్‌గా అమలు చేయబడుతుంది. అది కాకపోతే, అది ఆదేశాల కోసం ప్రాధాన్యత క్రమంలో కొనసాగుతుంది. స్క్రిప్ట్ వెలుపల నిర్వచించిన ఫంక్షన్‌ను అమలు చేయడానికి, వాటిని -x లక్షణంతో ప్రకటించాలి; లేకపోతే, వాటిని ఉపయోగించి చేర్చబడవచ్చు. కమాండ్ మేము ఈ వర్గం యొక్క ఆదేశాలను వినియోగదారు-నిర్వచించిన విధులు లేదా ఫంక్షన్లను సంక్షిప్తంగా పిలుస్తాము.





ఆదేశాలు అంటే ఏమిటి

కమాండ్ అనేది షెల్ ఎన్విరాన్‌మెంట్‌లోని ప్రోగ్రామ్‌ని ఎంట్రీ చేసే ఒకే పాయింట్‌గా పరిగణించాల్సిన ఏదైనా పదం. కమాండ్ అమలు చేయబడిన సందర్భంలో, కమాండ్ మరియు ఐచ్ఛిక వాదనలు స్థాన పారామితులుగా పంపబడతాయి, $ {0}, $ {1}, $ {2}, ... సున్నా స్థాన పరామితి ($ {0}) సూచిస్తుంది ఆదేశం మరియు సందర్భంలో మారదు. అంటే, ఫంక్షన్లలో స్థాన పారామితుల వలె కాకుండా, $ {1}, $ {2}, ... సందర్భాన్ని బట్టి మారవచ్చు, $ {0} ఫంక్షన్ కాల్‌ల మధ్య మారదు.

మీ బాష్ ప్రోగ్రామ్‌కు గ్లోబల్, అంతర్నిర్మిత బాష్ లేదా స్థానికంగా కేటాయించిన డిక్లరేషన్ మరియు లక్షణాలను బట్టి కమాండ్‌లు స్కోప్ చేయబడతాయి.



తెలుసుకోవడానికి ఇక్కడ కమాండ్ రకాల జాబితా ఉంది.

బిల్టిన్ ఆదేశాలు

వీరు ' మీ బాష్ స్క్రిప్ట్‌లో ఉపయోగించడానికి అందుబాటులో ఉండే బాష్ బిల్ట్ ఇన్ కమాండ్‌ల జాబితాలో ఉన్న ఈ ఆదేశాలను మీరు లెక్కించండి.

మీ బాష్ వ్యాఖ్యాత యొక్క హోదా మరియు వెర్షన్ నంబర్‌ని బట్టి కొన్ని ఆదేశాలు అందుబాటులో ఉండకపోవచ్చు.

బాహ్య ఆదేశాలు

బాహ్య ఆదేశాలు కర్ల్ వంటి బాష్ స్క్రిప్ట్ వెలుపల యాక్సెస్ చేయదగినవి. విధులు కాకుండా, బాహ్య ఆదేశాలు వేరియబుల్స్‌గా నిల్వ చేయబడవు.

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

బాష్: తెలియని ఆదేశం:కమాండ్దొరకలేదు

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

వంకరగా() {
కమాండ్ $ {FUNCNAME}...
}

ఇది పనిచేస్తుంది ఎందుకంటే బాహ్య ఆదేశాలు మరియు బాష్ బిల్టిన్‌ల కంటే ఫంక్షన్లకు అధిక ప్రాధాన్యత ఉంటుంది. ఫంక్షన్ పేరులో అనుమతించబడిన అక్షరాలు పరిమితి.

పై ఉదాహరణను ఈ విధంగా మారుపేరు ఉపయోగించి సాధించవచ్చు.

మారుపేరు వంకరగా= '
{
వంకరగా ...
}
'

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

విధులు

బాష్‌లోని విధులు. బిల్టిన్‌లు మరియు బాహ్య ఆదేశాలను చూసే ముందు, ఒక ఫంక్షన్ అభ్యర్థి ఫంక్షన్ పేరు ద్వారా నిర్వచించబడిందో లేదో బాష్ తనిఖీ చేస్తుంది, మొదటి పదం ఒక లైన్‌లో లేదా తర్వాత కనిపిస్తుంది; కమాండ్ లైన్ ముగింపును సూచించే పాత్ర. $ {FUNCNAME} వంటి అన్ని క్యాప్‌లలో వ్రాయబడిన బాష్ వేరియబుల్స్ మాత్రమే మినహాయింపు.

మారుపేరు() { FUNCNAME= asdf;బయటకు విసిరారు $ {@ ,,};}
మారుపేరు వంకరగా='పరీక్ష కర్ల్ అలియాస్' #?

సాధారణ ఆదేశాలు

సాధారణ ఆదేశాలు బాష్ మ్యాన్ పేజీలలో ఐచ్ఛిక వాదనల తర్వాత పదంగా నిర్వచించబడ్డాయి. సందర్భంలో, ఒక సాధారణ ఆదేశం అంతర్నిర్మిత, బాహ్య ఆదేశం లేదా ఫంక్షన్ కావచ్చు.

బాష్ స్క్రిప్ట్ లోపల నుండి ఆదేశాలను ఎలా అమలు చేయాలి

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

బాష్ స్క్రిప్ట్‌లో ప్రాధాన్యతను నియంత్రించడానికి ఇక్కడ కొన్ని మార్గాలు ఉన్నాయి.

బాష్ నిర్ణయించనివ్వండి

కమాండ్_పేరు

చాలా వరకు, ప్రత్యేకించి ప్రారంభంలో, ఏ ఆదేశాన్ని ఉపయోగించాలో నిర్ణయించడానికి మేము బాష్‌ని అనుమతిస్తాము. అయితే, మీ ఉద్దేశం బాష్ ద్వారా సరిగ్గా అర్థం చేసుకోబడని సందర్భాలు ఉన్నాయి. ఫంక్షన్ పేర్లు మరియు బాహ్య ఆదేశాలు లేదా బిల్టిన్‌లు అతివ్యాప్తి చెందుతున్నప్పుడు అలాంటి పరిస్థితి ఉంటుంది.

బాహ్య ఆదేశాన్ని అమలు చేయండి

కమాండ్కమాండ్_పేరు

ఇంటరాక్టివ్ మోడ్‌లో అందుబాటులో ఉన్న బాహ్య కమాండ్ command_name ఉందని అనుకుందాం మరియు మీరు దానిని బాష్ స్క్రిప్ట్‌లో ఉపయోగించాలనుకుంటున్నారు. అంతర్నిర్మిత ఆదేశాన్ని ఉపయోగించి command_name అనేది బాహ్య ఆదేశం అని మేము బాష్‌కి స్పష్టంగా చెప్పగలం.

బాహ్య కమాండ్ ఉదాహరణలు

కింది వాటిని ఇన్‌స్టాల్ చేసినట్లు ఊహిస్తూ బాహ్య కమాండ్ ఉదాహరణలు:

ఫైల్
వెళ్ళండి
ఫిగ్లెట్
ఉదాహరణ: ఫైల్ రకం మరియు సమాచారాన్ని పొందండి
{ # ఫైల్ రకం మరియు సమాచారాన్ని పొందండి
ఫైల్ $ {infile} # (1,2)
}
# (1) కమాండ్, ఫైల్
# (2) ఇన్ఫైల్ = {ఫైల్‌కి మార్గం}
ఉదాహరణ: Git లో స్టేజ్ మోడిఫైడ్ మరియు కొత్త ఫైల్స్
{ Git లో # స్టేజ్ ఫైల్స్
git జోడించండి.# (1)
}
# (1) ఆదేశం, git
ఉదాహరణ: ఫిగ్లెట్ ఉపయోగించి ascii కళను సృష్టించండి
{ # ascii కళను సృష్టించండి
ఫిగ్లెట్$ {message} # (1,2)
}
# (1) కమాండ్, ఫిగ్లెట్
# (2) సందేశం = {ascii కళగా ప్రదర్శించడానికి సందేశం}

అంతర్నిర్మిత ఆదేశాన్ని అమలు చేయండి

బిల్డింగ్కమాండ్_పేరు

బాష్‌లో బిల్ట్‌ఇన్‌గా నిర్వచించబడిన ఆదేశాలలో కమాండ్_పేరు ఒకటి అని అనుకుందాం. మేము కమాండ్_పేరును బిల్ట్‌ఇన్‌గా అమలు చేయాలనుకుంటున్నామని బాష్‌కు తెలియజేయడానికి మేము బిల్ట్‌ని బిల్డ్‌ని ఉపయోగిస్తాము.

అంతర్నిర్మిత కమాండ్ ఉదాహరణలు
ఉదాహరణ: ఎన్ని బిల్డిన్‌లు?
బిల్డింగ్{,}{,,}{,,,} # ఎన్ని బిల్డిన్‌లు?
ఉదాహరణ: ఫాంటమ్ డిక్లేర్
{
ప్రకటించండి() { బయటకు విసిరారుఅయ్యో!;}
ప్రకటించండి- xfప్రకటించండి #?
}

ముగింపు

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