బాష్లో వేరియబుల్స్తో ఎలా పని చేయాలి
మీరు స్క్రిప్ట్లను వ్రాయాలనుకుంటే మరియు వెబ్ నుండి కట్ చేసి పేస్ట్ చేయబోయే కోడ్ మీ లైనక్స్ కంప్యూటర్కు ఏమి చేస్తుందో అర్థం చేసుకోవాలంటే వేరియబుల్స్ చాలా ముఖ్యమైనవి. మేము మీరు ప్రారంభిస్తాము!
వేరియబుల్స్ 101
వేరియబుల్స్ స్ట్రింగ్ లేదా సంఖ్యా విలువను సూచించే చిహ్నాలు అని పేరు పెట్టబడ్డాయి. మీరు వాటిని ఆదేశాలు మరియు వ్యక్తీకరణలలో ఉపయోగించినప్పుడు, అవి వేరియబుల్ పేరుకు బదులుగా వారు కలిగి ఉన్న విలువను టైప్ చేసినట్లుగా పరిగణించబడతాయి.
వేరియబుల్ సృష్టించడానికి, మీరు దాని కోసం ఒక పేరు మరియు విలువను అందిస్తారు. మీ వేరియబుల్ పేర్లు వివరణాత్మకంగా ఉండాలి మరియు అవి కలిగి ఉన్న విలువను మీకు గుర్తు చేస్తాయి. వేరియబుల్ పేరు సంఖ్యతో ప్రారంభించబడదు లేదా ఖాళీలను కలిగి ఉండదు. అయితే, ఇది అండర్ స్కోర్తో ప్రారంభమవుతుంది. అలా కాకుండా, మీరు ఎగువ- మరియు చిన్న అక్షరాల సంఖ్యను ఉపయోగించవచ్చు.
ఉదాహరణలు
ఇక్కడ, మేము ఐదు వేరియబుల్స్ సృష్టిస్తాము. ఫార్మాట్ పేరును టైప్ చేయడం, సమాన చిహ్నం =
, మరియు విలువ. సమాన చిహ్నానికి ముందు లేదా తరువాత స్థలం లేదని గమనించండి. వేరియబుల్కు విలువ ఇవ్వడం తరచుగా సూచిస్తారు కేటాయించడం వేరియబుల్కు విలువ.
మేము నాలుగు స్ట్రింగ్ వేరియబుల్స్ మరియు ఒక సంఖ్యా వేరియబుల్ ను సృష్టిస్తాము,ఈ సంవత్సరం:
me = డేవ్
my_boost = Linux
అతన్ని = పొపాయ్
his_boost = బచ్చలికూర
this_year = 2019
వేరియబుల్లో ఉన్న విలువను చూడటానికి, ఉపయోగించండి ప్రతిధ్వని
ఆదేశం. మీరు డాలర్ గుర్తుతో వేరియబుల్ పేరుకు ముందు ఉండాలి $
దిగువ చూపిన విధంగా, మీరు కలిగి ఉన్న విలువను సూచించినప్పుడల్లా:
echo $ my_name
ప్రతిధ్వని $ my_boost
ప్రతిధ్వని $ this_year
మా అన్ని వేరియబుల్స్ను ఒకేసారి ఉపయోగిద్దాం:
ప్రతిధ్వని "$ my_boost $ నాకు $ as_boost $ him (c) $ this_year"
వేరియబుల్స్ యొక్క విలువలు వాటి పేర్లను భర్తీ చేస్తాయి. మీరు వేరియబుల్స్ విలువలను కూడా మార్చవచ్చు. వేరియబుల్కు క్రొత్త విలువను కేటాయించడానికి,my_boost
, మీరు దాని మొదటి విలువను కేటాయించినప్పుడు మీరు చేసినదాన్ని పునరావృతం చేస్తారు,
my_boost = టేకిలా
మీరు మునుపటి ఆదేశాన్ని తిరిగి అమలు చేస్తే, మీరు ఇప్పుడు వేరే ఫలితాన్ని పొందుతారు:
ప్రతిధ్వని "$ my_boost $ నాకు $ as_boost $ him (c) $ this_year"
కాబట్టి, మీరు అదే వేరియబుల్స్ను సూచించే అదే ఆదేశాన్ని ఉపయోగించవచ్చు మరియు మీరు వేరియబుల్స్లో ఉన్న విలువలను మార్చినట్లయితే వేర్వేరు ఫలితాలను పొందవచ్చు.
మేము తరువాత వేరియబుల్స్ కోట్ గురించి మాట్లాడుతాము. ప్రస్తుతానికి, గుర్తుంచుకోవలసిన కొన్ని విషయాలు ఇక్కడ ఉన్నాయి:
- ఒకే కోట్స్లో వేరియబుల్
'
అక్షర స్ట్రింగ్ వలె పరిగణించబడుతుంది మరియు వేరియబుల్ గా కాదు. - కొటేషన్ మార్కులలో వేరియబుల్స్
"
వేరియబుల్స్గా పరిగణించబడతాయి. - విలువను వేరియబుల్లో పొందడానికి, మీరు డాలర్ గుర్తును అందించాలి
$
. - డాలర్ గుర్తు లేని వేరియబుల్
$
వేరియబుల్ పేరును మాత్రమే అందిస్తుంది.
మీరు ఇప్పటికే ఉన్న వేరియబుల్ లేదా వేరియబుల్స్ సంఖ్య నుండి దాని విలువను తీసుకునే వేరియబుల్ ను కూడా సృష్టించవచ్చు. కింది ఆదేశం అనే కొత్త వేరియబుల్ను నిర్వచిస్తుంది పానీయం_ఆ_ఇప్పుడు,
మరియు దాని యొక్క మిశ్రమ విలువలను కేటాయిస్తుంది my_boost
మరియు ఈ సంవత్సరం
వేరియబుల్స్:
drink_of-the_Year = "$ my_boost $ this_year"
ఎకో డ్రింక్_ఆఫ్_ఇయర్
స్క్రిప్ట్స్లో వేరియబుల్స్ ఎలా ఉపయోగించాలి
స్క్రిప్ట్లు వేరియబుల్స్ లేకుండా పూర్తిగా హామ్స్ట్రంగ్ చేయబడతాయి. వేరియబుల్స్ ఒక నిర్దిష్ట, పరిష్కారం కాకుండా స్క్రిప్ట్ను సాధారణం చేసే వశ్యతను అందిస్తాయి. వ్యత్యాసాన్ని వివరించడానికి, ఫైళ్ళను లెక్కించే స్క్రిప్ట్ ఇక్కడ ఉంది / dev
డైరెక్టరీ.
దీన్ని టెక్స్ట్ ఫైల్లో టైప్ చేసి, ఆపై ఇలా సేవ్ చేయండి fcnt.sh
(“ఫైల్ కౌంట్” కోసం):
#!
మీరు స్క్రిప్ట్ను అమలు చేయడానికి ముందు, క్రింద చూపిన విధంగా మీరు దానిని అమలు చేయవలసి ఉంటుంది:
chmod + x fcnt.sh
స్క్రిప్ట్ను అమలు చేయడానికి కింది వాటిని టైప్ చేయండి:
./fcnt.sh
ఇది ఫైళ్ళ సంఖ్యను ప్రింట్ చేస్తుంది / dev
డైరెక్టరీ. ఇది ఎలా పనిచేస్తుందో ఇక్కడ ఉంది:
- అనే వేరియబుల్
ఫోల్డర్_కు_కౌంట్
నిర్వచించబడింది మరియు ఇది “/ dev” స్ట్రింగ్ను పట్టుకోవడానికి సెట్ చేయబడింది. - మరొక వేరియబుల్, అని
ఫైల్_కౌంట్
, నిర్వచించబడింది. ఈ వేరియబుల్ దాని విలువను కమాండ్ ప్రత్యామ్నాయం నుండి తీసుకుంటుంది. కుండలీకరణాల మధ్య కమాండ్ పదబంధం ఇది$( )
. డాలర్ గుర్తు ఉందని గమనించండి$
మొదటి కుండలీకరణానికి ముందు. ఈ నిర్మాణం$( )
కుండలీకరణాల్లోని ఆదేశాలను అంచనా వేస్తుంది, ఆపై వాటి తుది విలువను అందిస్తుంది. ఈ ఉదాహరణలో, ఆ విలువ కేటాయించబడుతుందిఫైల్_కౌంట్
వేరియబుల్. వరకుఫైల్_కౌంట్
వేరియబుల్ సంబంధించినది, ఇది పట్టుకోవలసిన విలువను దాటింది; విలువ ఎలా పొందబడిందనే దానితో సంబంధం లేదు. - కమాండ్ ప్రత్యామ్నాయంలో మూల్యాంకనం చేయబడిన ఆదేశం ఒక
ls
లోని డైరెక్టరీలో ఫైల్ లిస్టింగ్ఫోల్డర్_కు_కౌంట్
వేరియబుల్, ఇది “/ dev” కు సెట్ చేయబడింది. కాబట్టి, స్క్రిప్ట్ “ls / dev” ఆదేశాన్ని అమలు చేస్తుంది. - ఈ ఆదేశం నుండి అవుట్పుట్ పైప్ చేయబడుతుంది
wc
ఆదేశం. ది-l
(లైన్ కౌంట్) ఎంపిక కారణాలుwc
నుండి అవుట్పుట్లోని పంక్తుల సంఖ్యను లెక్కించడానికిls
ఆదేశం. ప్రతి ఫైల్ ప్రత్యేక పంక్తిలో జాబితా చేయబడినందున, ఇది “/ dev” డైరెక్టరీలోని ఫైల్స్ మరియు ఉప డైరెక్టరీల సంఖ్య. ఈ విలువఫైల్_కౌంట్
వేరియబుల్. - తుది పంక్తి ఫలితాన్ని ఇవ్వడానికి ఎకోను ఉపయోగిస్తుంది.
కానీ ఇది “/ dev” డైరెక్టరీ కోసం మాత్రమే పనిచేస్తుంది. ఏదైనా డైరెక్టరీతో స్క్రిప్ట్ను ఎలా పని చేయగలం? దీనికి కావలసిందల్లా ఒక చిన్న మార్పు.
స్క్రిప్ట్స్లో కమాండ్ లైన్ పారామితులను ఎలా ఉపయోగించాలి
వంటి అనేక ఆదేశాలు ls
మరియు wc
, కమాండ్ లైన్ పారామితులను తీసుకోండి. ఇవి ఆదేశానికి సమాచారాన్ని అందిస్తాయి, కాబట్టి మీరు ఏమి చేయాలనుకుంటున్నారో అది తెలుసు. మీకు కావాలంటేls
మీ హోమ్ డైరెక్టరీలో పనిచేయడానికి మరియు దాచిన ఫైళ్ళను చూపించడానికి, మీరు ఈ క్రింది ఆదేశాన్ని ఉపయోగించవచ్చు, ఇక్కడ టిల్డే ~
ఇంకా -అ
(అన్నీ) ఎంపిక కమాండ్ లైన్ పారామితులు:
ls ~ -a
మా స్క్రిప్ట్లు కమాండ్ లైన్ పారామితులను అంగీకరించగలవు. వారు ఇలా ప్రస్తావించబడ్డారు $1
మొదటి పరామితి కోసం, $2
రెండవది, మరియు మొదలైనవి $9
తొమ్మిదవ పరామితి కోసం. (వాస్తవానికి, ఒక ఉంది $0
, అలాగే, కానీ ఇది ఎల్లప్పుడూ స్క్రిప్ట్ను కలిగి ఉండటానికి ప్రత్యేకించబడింది.)
మీరు రెగ్యులర్ వేరియబుల్స్ మాదిరిగానే స్క్రిప్ట్లో కమాండ్ లైన్ పారామితులను సూచించవచ్చు. క్రింద చూపిన విధంగా మా స్క్రిప్ట్ను సవరించండి మరియు క్రొత్త పేరుతో సేవ్ చేద్దాంfcnt2.sh
:
#! / bin / bash folder_to_count = $ 1 file_count = $ (ls $ folder_to_count | wc -l) $ file_count ఫైళ్ళను $ folder_to_count లో ప్రతిధ్వనిస్తుంది
ఈసారి, ది ఫోల్డర్_కు_కౌంట్
వేరియబుల్ మొదటి కమాండ్ లైన్ పరామితి యొక్క విలువను కేటాయించింది, $1
.
మిగిలిన స్క్రిప్ట్ మునుపటిలాగే పనిచేస్తుంది. నిర్దిష్ట పరిష్కారం కాకుండా, మీ స్క్రిప్ట్ ఇప్పుడు సాధారణమైనది. మీరు దీన్ని ఏదైనా డైరెక్టరీలో ఉపయోగించవచ్చు ఎందుకంటే ఇది “/ dev” తో మాత్రమే పనిచేయడానికి హార్డ్కోడ్ చేయబడలేదు.
మీరు స్క్రిప్ట్ను ఎలా అమలు చేయవచ్చో ఇక్కడ ఉంది:
chmod + x fcnt2.sh
ఇప్పుడు, కొన్ని డైరెక్టరీలతో ప్రయత్నించండి. మీరు మునుపటి ఫలితాన్ని పొందారని నిర్ధారించుకోవడానికి మీరు మొదట “/ dev” చేయవచ్చు. కింది వాటిని టైప్ చేయండి:
./fnct2.sh / dev
./fnct2.sh / etc
./fnct2.sh / bin
“/ Dev” డైరెక్టరీ కోసం మీరు మునుపటి ఫలితాన్ని (207 ఫైల్స్) పొందుతారు. ఇది ప్రోత్సాహకరంగా ఉంది మరియు మీరు ప్రతి ఇతర కమాండ్ లైన్ పారామితులకు డైరెక్టరీ-నిర్దిష్ట ఫలితాలను పొందుతారు.
స్క్రిప్ట్ను తగ్గించడానికి, మీరు వేరియబుల్తో పంపిణీ చేయవచ్చు,ఫోల్డర్_కు_కౌంట్
, మొత్తంగా, మరియు కేవలం సూచన $1
అంతటా, ఈ క్రింది విధంగా:
#! / bin / bash file_count = $ (ls $ 1 wc -l) $ 1 లో $ file_count ఫైళ్ళను ప్రతిధ్వనిస్తుంది
స్పెషల్ వేరియబుల్స్ తో పనిచేస్తోంది
మేము ప్రస్తావించాము $0
, ఇది ఎల్లప్పుడూ స్క్రిప్ట్ యొక్క ఫైల్ పేరుకు సెట్ చేయబడుతుంది. పేరు మార్చబడినా, దాని పేరును సరిగ్గా ముద్రించడం వంటి పనులను చేయడానికి స్క్రిప్ట్ని ఉపయోగించడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. లాగింగ్ పరిస్థితులలో ఇది ఉపయోగపడుతుంది, దీనిలో మీరు ఎంట్రీని జోడించిన ప్రక్రియ పేరు తెలుసుకోవాలి.
కిందివి ఇతర ప్రత్యేక ప్రీసెట్ వేరియబుల్స్:
- $#: స్క్రిప్ట్కు ఎన్ని కమాండ్ లైన్ పారామితులు పంపించబడ్డాయి.
- $@: అన్ని కమాండ్ లైన్ పారామితులు స్క్రిప్ట్కు పంపబడ్డాయి.
- $?: అమలు చేయడానికి చివరి ప్రక్రియ యొక్క నిష్క్రమణ స్థితి.
- $$: ప్రస్తుత స్క్రిప్ట్ యొక్క ప్రాసెస్ ID (PID).
- $ USER: స్క్రిప్ట్ను అమలు చేస్తున్న వినియోగదారు యొక్క వినియోగదారు పేరు.
- OST HOSTNAME: స్క్రిప్ట్ నడుస్తున్న కంప్యూటర్ యొక్క హోస్ట్ పేరు.
- $ సెకండ్స్: స్క్రిప్ట్ ఎన్ని సెకన్ల పాటు నడుస్తోంది.
- R రాండమ్: యాదృచ్ఛిక సంఖ్యను అందిస్తుంది.
- $ లినెనో: స్క్రిప్ట్ యొక్క ప్రస్తుత పంక్తి సంఖ్యను అందిస్తుంది.
మీరు అవన్నీ ఒకే స్క్రిప్ట్లో చూడాలనుకుంటున్నారా? నువ్వు చేయగలవు! కిందివాటిని టెక్స్ట్ ఫైల్గా సేవ్ చేయండి,special.sh
:
#! నిష్క్రమణ స్థితిలో pwd echo "pwd return $?" ఎకో "ఈ స్క్రిప్ట్ ప్రాసెస్ ఐడిని కలిగి ఉంది $$" ఎకో "స్క్రిప్ట్ $ USER" ఎకో "చేత ప్రారంభించబడింది ఇది $ HOSTNAME" స్లీప్ 3 ఎకో "లో నడుస్తోంది $ సెకండ్ సెకన్ల పాటు నడుస్తోంది" ఎకో "రాండమ్ సంఖ్య: $ రాండమ్" ప్రతిధ్వని "ఇది పంక్తి సంఖ్య $ స్క్రిప్ట్ యొక్క LINENO"
ఇది అమలు చేయదగినదిగా చేయడానికి క్రింది వాటిని టైప్ చేయండి:
chmod + x special.sh
ఇప్పుడు, క్రింద చూపిన విధంగా మీరు దానిని వేర్వేరు కమాండ్ లైన్ పారామితుల సమూహంతో అమలు చేయవచ్చు.
పర్యావరణ వేరియబుల్స్
బాష్ ప్రారంభించినప్పుడు పర్యావరణం యొక్క లక్షణాలను నిర్వచించడానికి మరియు రికార్డ్ చేయడానికి పర్యావరణ చరరాశులను ఉపయోగిస్తుంది. మీ వినియోగదారు పేరు, లొకేల్, మీ చరిత్ర ఫైల్ పట్టుకోగల ఆదేశాల సంఖ్య, మీ డిఫాల్ట్ ఎడిటర్ మరియు మరెన్నో వంటి ఈ హోల్డ్ సమాచారం బాష్ సులభంగా యాక్సెస్ చేయవచ్చు.
మీ బాష్ సెషన్లో క్రియాశీల పర్యావరణ వేరియబుల్స్ చూడటానికి, ఈ ఆదేశాన్ని ఉపయోగించండి:
env | తక్కువ
మీరు జాబితా ద్వారా స్క్రోల్ చేస్తే, మీ స్క్రిప్ట్స్లో సూచించడానికి ఉపయోగపడే కొన్నింటిని మీరు కనుగొనవచ్చు.
వేరియబుల్స్ ఎగుమతి ఎలా
స్క్రిప్ట్ నడుస్తున్నప్పుడు, అది దాని స్వంత ప్రక్రియలో ఉంటుంది మరియు అది ఉపయోగించే వేరియబుల్స్ ఆ ప్రక్రియ వెలుపల చూడలేవు. మీరు మీ స్క్రిప్ట్ ప్రారంభించిన మరొక స్క్రిప్ట్తో వేరియబుల్ను భాగస్వామ్యం చేయాలనుకుంటే, మీరు ఆ వేరియబుల్ను ఎగుమతి చేయాలి. రెండు స్క్రిప్ట్లతో దీన్ని ఎలా చేయాలో మేము మీకు చూపుతాము.
మొదట, ఫైల్ పేరుతో కింది వాటిని సేవ్ చేయండిscript_one.sh
:
#! $ first_var, second_var = $ second_var "
ఇది రెండు వేరియబుల్స్ సృష్టిస్తుంది, మొదటి_వర్
మరియు రెండవ_వర్
, మరియు ఇది కొన్ని విలువలను కేటాయిస్తుంది. ఇది టెర్మినల్ విండోకు వీటిని ప్రింట్ చేస్తుంది, వేరియబుల్స్ ఎగుమతి చేస్తుంది మరియు కాల్ చేస్తుంది script_two.sh
. ఎప్పుడు script_two.sh
ముగుస్తుంది మరియు ప్రాసెస్ ప్రవాహం ఈ స్క్రిప్ట్కు తిరిగి వస్తుంది, ఇది మళ్ళీ టెర్మినల్ విండోకు వేరియబుల్స్ను ప్రింట్ చేస్తుంది. అప్పుడు, అవి మారిపోయాయో లేదో మీరు చూడవచ్చు.
మేము ఉపయోగించే రెండవ స్క్రిప్ట్ script_two.sh
. ఇది స్క్రిప్ట్script_one.sh
కాల్స్. కింది వాటిని టైప్ చేయండి:
#! $ second_var "
ఈ రెండవ స్క్రిప్ట్ రెండు వేరియబుల్స్ యొక్క విలువలను ప్రింట్ చేస్తుంది, వాటికి కొత్త విలువలను కేటాయిస్తుంది, ఆపై వాటిని మళ్లీ ప్రింట్ చేస్తుంది.
ఈ స్క్రిప్ట్లను అమలు చేయడానికి, మీరు వాటిని అమలు చేయగలిగేలా కింది వాటిని టైప్ చేయాలి:
chmod + x script_one.sh chmod + x script_two.sh
ఇప్పుడు, ప్రారంభించడానికి కింది వాటిని టైప్ చేయండి script_one.sh
:
./script_one.sh
అవుట్పుట్ మనకు ఇది చెబుతుంది:
- script_one.sh వేరియబుల్స్ యొక్క విలువలను ప్రింట్ చేస్తుంది, అవి ఆల్ఫా మరియు బ్రావో.
- script_two.sh వేరియబుల్స్ (ఆల్ఫా మరియు బ్రావో) విలువలను అందుకున్నట్లు ప్రింట్ చేస్తుంది.
- script_two.sh వాటిని చార్లీ మరియు డెల్టాగా మారుస్తుంది.
- script_one.sh వేరియబుల్స్ యొక్క విలువలను ముద్రిస్తుంది, అవి ఇప్పటికీ ఆల్ఫా మరియు బ్రేవో.
రెండవ లిపిలో ఏమి జరుగుతుంది, రెండవ లిపిలో ఉంటుంది. ఇది వేరియబుల్స్ యొక్క కాపీలు రెండవ స్క్రిప్ట్కు పంపినట్లుగా ఉంటుంది, కానీ ఆ స్క్రిప్ట్ నిష్క్రమించినప్పుడు అవి విస్మరించబడతాయి. మొదటి స్క్రిప్ట్లోని అసలు వేరియబుల్స్ రెండవ వాటి కాపీలకు జరిగే దేనినీ మార్చవు.
వేరియబుల్స్ ఎలా కోట్ చేయాలి
స్క్రిప్ట్స్ వేరియబుల్స్ రిఫరెన్స్ చేసినప్పుడు, అవి కొటేషన్ మార్కుల్లో ఉన్నాయని మీరు గమనించి ఉండవచ్చు "
. ఇది వేరియబుల్స్ సరిగ్గా ప్రస్తావించటానికి అనుమతిస్తుంది, కాబట్టి స్క్రిప్ట్లో లైన్ ఎగ్జిక్యూట్ అయినప్పుడు వాటి విలువలు ఉపయోగించబడతాయి.
మీరు వేరియబుల్కు కేటాయించిన విలువ ఖాళీలను కలిగి ఉంటే, మీరు వాటిని వేరియబుల్కు కేటాయించినప్పుడు అవి కొటేషన్ మార్కుల్లో ఉండాలి. ఎందుకంటే, అప్రమేయంగా, బాష్ ఖాళీని డీలిమిటర్గా ఉపయోగిస్తుంది.
ఇక్కడ ఒక ఉదాహరణ:
site_name = హౌ-టు గీక్
బాష్ “గీక్” కి ముందు స్థలాన్ని క్రొత్త ఆదేశం ప్రారంభిస్తున్నట్లు సూచిస్తుంది. అటువంటి ఆదేశం లేదని ఇది నివేదిస్తుంది మరియు పంక్తిని వదిలివేస్తుంది. ప్రతిధ్వని
మాకు చూపిస్తుంది సైట్_పేరు
వేరియబుల్ ఏమీ లేదు-“హౌ-టు” టెక్స్ట్ కూడా కాదు.
దిగువ చూపిన విధంగా విలువ చుట్టూ కొటేషన్ గుర్తులతో మళ్ళీ ప్రయత్నించండి:
site_name = "హౌ-టు గీక్"
ఈ సమయంలో, ఇది ఒకే విలువగా గుర్తించబడింది మరియు సరిగ్గా కేటాయించబడింది సైట్_పేరు
వేరియబుల్.
ఎకో ఈజ్ యువర్ ఫ్రెండ్
ప్రత్యామ్నాయాన్ని ఆదేశించడానికి, వేరియబుల్స్ కోట్ చేయడానికి మరియు డాలర్ గుర్తును ఎప్పుడు చేర్చాలో గుర్తుంచుకోవడానికి కొంత సమయం పడుతుంది.
మీరు ఎంటర్ నొక్కండి మరియు బాష్ ఆదేశాల పంక్తిని అమలు చేయడానికి ముందు, దీన్ని ప్రయత్నించండి ప్రతిధ్వని
దాని ముందు. ఈ విధంగా, ఏమి జరగబోతోందో మీకు కావలసినది అని మీరు నిర్ధారించుకోవచ్చు. మీరు వాక్యనిర్మాణంలో చేసిన ఏవైనా పొరపాట్లను కూడా మీరు పట్టుకోవచ్చు.