హలో
కండిషన్తో స్క్రిప్ట్ను ఎలా తయారు చేయాలో ఈసారి మీకు చూపిస్తాను బాష్, ఇది అనువదించబడింది:
మీకు కావలసిన X విషయం నెరవేరితే, Y చర్య జరుగుతుంది, అది సాధించకపోతే మరొక చర్య జరుగుతుంది.
సాధారణ వివరణ లేదు
ఇప్పుడు, ఈ ట్యుటోరియల్లో ఉపయోగించడానికి కొన్ని నిమిషాలు కొన్ని ఉదాహరణలు ఆలోచించాను, ఈ క్రింది గందరగోళం / సమస్య / పరిస్థితి నాకు సంభవించింది:
మేము మా కంపెనీ నెట్వర్క్లో ఉన్నాము మరియు X కంప్యూటర్ నెట్వర్క్కు కనెక్ట్ చేయబడిందో లేదో తెలుసుకోవాలనుకుంటున్నాము. ఇందుకోసం మనం ఒక స్క్రిప్ట్ అతను ఏమి చేస్తాడు పింగ్ ఆ కంప్యూటర్ వైపు, మరియు అది నెట్వర్క్లో ఉంటే (అంటే, అది తిరిగి ఇస్తే పింగ్) అవును, అది నెట్వర్క్లో ఉందని మాకు తెలియజేస్తుంది, లేకపోతే (అంటే ఇది నెట్వర్క్లో లేదు) ఇది నెట్వర్క్లో లేదని మాకు తెలియజేస్తుంది.
ఇది పూర్తయిన తర్వాత, షరతులతో చక్రం ఎలా చేయాలో ఇప్పుడు వివరిస్తాను
ఇక్కడ కోడ్ ఉంది:
ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi
చింతించకండి, నేను మీకు వివరంగా వివరిస్తాను
పింగ్ మేము ఉపయోగించే ఆదేశం, మరియు ఆ PC నెట్వర్క్లో ఉంటే అది మాకు తెలియజేస్తుంది. ఏ పిసి నెట్వర్క్లో ఉందో లేదో తనిఖీ చేయాలనుకుంటే, మనం తప్పక మారాలి IP చిరునామా స్పష్టంగా, మేము తనిఖీ చేయదలిచిన PC యొక్క IP చిరునామా.
మీరు గమనిస్తే, నేను put-సి 1«, ఇది మాకు అవసరం. మేము కంప్యూటర్ను పింగ్ చేసినప్పుడు, మనల్ని మనం నొక్కేవరకు ఈ చర్య (పింగ్) ఆగదు [Ctrl] + [C], కాబట్టి «-సి 1One మేము ఒక ధృవీకరణ మాత్రమే చేయమని చెప్పాము (ఒక పింగ్ ప్రయత్నం మాత్రమే) మరియు మరొకటి కాదు, ఇది తక్షణమే ఆగిపోతుంది, అంటే… కంప్యూటర్ నెట్వర్క్లో ఒక్కసారి మాత్రమే ఉందో లేదో ఇది తనిఖీ చేస్తుంది.
మీకు దీనిపై సందేహాలు ఉంటే, నొప్పి లేదు ... వారు అలా చెప్తారు మరియు నేను మీకు మళ్ళీ వివరించడానికి సంతోషంగా ఉంటాను
ఇప్పుడు చక్రం వస్తుంది, ఎందుకంటే నేను వివరించినది సాధారణ ఆదేశం / చర్య కంటే ఎక్కువ కాదు
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi
మీరు దీన్ని అర్థం చేసుకోవడానికి, నేను బాష్ of యొక్క చాలా ముఖ్యమైన వివరాలను వివరిస్తాను
ఈ విషయం గురించి చాలా పరిజ్ఞానం ఉన్నవారు నన్ను తప్పు లేదా అలాంటిదే అని ముద్ర వేయవచ్చు, కాని హే, నేను దీనిని ఆరంభకుల కోసం లేదా తక్కువ నిపుణుల కోసం వ్రాస్తాను, వారు అర్థం చేసుకున్నంత కాలం గొప్ప 😉
ఇది జరుగుతుంది బాష్ ఇది అలాంటిదే 0 y 1, అంటే, మీరు సజీవంగా ఉన్నారు లేదా మీరు చనిపోయారు, ఒక ఆదేశం లేదా చర్య అమలు చేయబడినప్పుడు: గాని బాగా అమలు ఏమి ఇబ్బంది లేదు (1), లేదా కొన్ని ఉన్నాయి సమస్య లేదా లోపం (0).
మేము X చర్య లేదా ఆదేశాన్ని నిర్వహిస్తాము, మరియు మేము చేసినది బాగా లేదా చెడుగా జరిగి ఉండవచ్చు, అది లోపం కలిగి ఉండవచ్చు లేదా కాకపోవచ్చు మరియు ఇక్కడే వివరాలు
మేము ఏమి పంపించాలో (ఈ సందర్భంలో: ping -c 1 IP-ADDRESS) లోపం ఇవ్వలేదు మరియు విజయవంతమైంది, కాబట్టి ఇది విలువను తిరిగి ఇస్తుంది: 1 . లేకపోతే, మరియు చర్య (అంటే పింగ్) విజయవంతం కాకపోతే, అది విలువను తిరిగి ఇస్తుంది 0.
చివరకు, పై కోడ్ అంటే ఏమిటి:
విలువ 0 తిరిగి ఇవ్వబడితే
వచనాన్ని ప్రదర్శించు: «నెట్వర్క్లో లేదు»
లేకపోతే (మరియు NOT 0 ను తిరిగి ఇవ్వండి, కానీ 1)
వచనాన్ని ప్రదర్శించు: «ఇది నెట్వర్క్లో ఉంటే«
ఇది నేను మీకు ఇప్పుడే వివరించాను, భవిష్యత్తులో చాలా విషయాల కోసం మాకు సేవ చేస్తుంది, ఎందుకంటే X చర్య లోపం ఇచ్చినట్లయితే, Y చర్య చేయండి మరియు X చర్య లోపం ఇవ్వకపోతే, Z చర్యను అనుమతించండి అని చెప్పడం నిజంగా ఉపయోగపడుతుంది.
కొంతమంది కొంచెం గందరగోళానికి గురవుతారని నాకు తెలుసు, కాబట్టి నేను దానిని అనేక రకాలుగా వివరించడానికి ప్రయత్నించాను, ప్రతి ఒక్కరూ దానిని ఒక విధంగా లేదా మరొక విధంగా అర్థం చేసుకోవడానికి ప్రయత్నిస్తున్నాను. ఎవరైనా సందేహాస్పదంగా ఉంటే, నాకు తెలియజేయండి.
ఇప్పుడు, మన స్క్రిప్ట్ చేద్దాం
ఈ ట్యుటోరియల్లోని దశలను మనం తప్పక పాటించాలి: బాష్: ఎక్జిక్యూటబుల్ స్క్రిప్ట్ ఎలా తయారు చేయాలి
అప్పుడు కింది కోడ్ను ఆ ఫైల్లోకి కాపీ చేద్దాం (స్క్రిప్ట్. ఎస్), మరియు చివరికి sayనిష్క్రమణ»(కోట్స్ లేకుండా):
ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi
ఇది ఇలా ఉండాలి (మీరు తప్పక IP-ADDRESS ను మీకు కావలసిన IP కి మార్చారని గుర్తుంచుకోండి):
ఇక్కడ మీరు నడుస్తున్న స్క్రిప్ట్ను చూడవచ్చు:
% CODE1%
మీరు గమనిస్తే, చివరికి అతను మనకు చెబుతాడు «అవును ఇది నెట్వర్క్లో ఉంది»
ఇక్కడ ముఖ్యమైన విషయం ఏమిటంటే వారు పరిస్థితుల గురించి వాస్తవానికి అర్థం చేసుకుంటారు, కాబట్టి దాన్ని మళ్ళీ వివరించడానికి నేను మీకు మరొక కోడ్ను వదిలివేస్తున్నాను, కానీ మరొక కోణం నుండి.
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
దీని అర్థం చాలా సులభం, నేను వివరణ పంక్తిని పంక్తిగా వదిలివేస్తాను:
1 వ పంక్తి: మనం వ్రాసేది, అది వేరియబుల్ యొక్క విలువ అవుతుంది «టెక్స్ట్»(కోట్స్ లేకుండా).
2 వ పంక్తి: వేరియబుల్ యొక్క కంటెంట్ (మేము ఇప్పుడే వ్రాసినది) ఉందో లేదో తనిఖీ చేయండి 3.
3 వ పంక్తి: విషయంలో 3, ఇది మాకు వచనాన్ని చూపుతుంది «Correcto»(కోట్స్ లేకుండా).
4 వ పంక్తి: లేకపోతే (అంటే, మేము 3 వ్రాయకపోతే).
5 వ పంక్తి: ఇది మాకు వచనాన్ని చూపుతుంది «సరికాని»(కోట్స్ లేకుండా).
6 వ పంక్తి: పరిస్థితి ముగింపు.
మేము ఉంచినట్లయితే వారు గ్రహించగలిగారు echo ఆపై డబుల్ కోట్స్ మధ్య («) ఒక వచనం, ఇది ఆ వచనాన్ని టెర్మినల్లో ప్రదర్శించడానికి కారణమవుతుంది. అంటే, మనం ఉంచితే:
echo "esto es una prueba"
ఇది టెర్మినల్లోని వచనాన్ని మాకు చూపుతుంది: ఇది ఒక పరీక్ష
కానీ ఈ రెండవ ఉదాహరణకి తిరిగి వెళితే, ఈ రెండవ స్క్రిప్ట్ యొక్క ఉపయోగం (మరియు అమలు) చాలా సరళమైన something… విలక్షణమైన with తో మీకు చూపిస్తాను.1 + 2 ఎంత?«
పూర్తి స్క్రిప్ట్ యొక్క కోడ్ను నేను మీకు వదిలివేస్తున్నాను:
#!/bin/bash
# -*- ENCODING: UTF-8 -*-
echo "¿Cuánto es 1 + 2?"
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
exit
స్క్రిప్ట్ ఎలా పనిచేస్తుందో ఇక్కడ ఉంది:
% CODE2%
మరియు బాగా ... జోడించడానికి ఇంకేమీ లేదు.
ఇది ప్రాథమికమైనది, సరళమైనది, కాని ఇప్పటికీ నేను దానిని సాధ్యమైనంతవరకు వివరించడానికి ప్రయత్నించాను, ఎందుకంటే ప్రతిఒక్కరికీ ప్రోగ్రామర్ యొక్క ఆత్మ లేదు, మరియు చాలాసార్లు మనం ఇలాంటి స్క్రిప్ట్లను తయారు చేయాలి (లేదా ఇలాంటివి), ఏ సందర్భంలోనైనా ఈ వ్యాసం మీకు ఉపయోగకరంగా ఉంటుందని నేను ఆశిస్తున్నాను ఎవరైనా
ఏదైనా సందేహం లేదా ప్రశ్న, ఫిర్యాదు లేదా సలహా దయచేసి, ఇక్కడ వదిలివేయండి, నేను మీకు సంతోషంగా సమాధానం ఇస్తాను, అందువల్ల మనమందరం కొంచెం ఎక్కువ నేర్చుకుంటాము
కోట్తో ప్రత్యుత్తరం ఇవ్వండి
26 వ్యాఖ్యలు, మీదే వదిలేయండి
నువ్వు ప్రో !!! * లేదా *
ఏమీ కోసం నాహ్
ఇది మీకు సేవ చేసి ఆసక్తికరంగా ఉంటే, నేను సంతృప్తి చెందుతున్నాను
శుభాకాంక్షలు స్నేహితుడు
@ KZKG ^ గారా,
బాష్ ప్రోగ్రామింగ్ గురించి మాట్లాడుతూ నాకు ఒక ప్రశ్న ఉంది:
ఈ VAR = హలో వంటి వేరియబుల్ను డిక్లేర్ చేయడం మరియు ఈ VAR = {AR VAR: -హలో like లాగా ప్రకటించడం మధ్య తేడా ఏమిటి?
నేను వివరిస్తా:
http://pastebin.com/a3cfWXeD
శుభాకాంక్షలు
హలో
బాగా, నేను బాష్లో నిపుణుడిని కాదు ... వాస్తవానికి, నాకు LOL తెలియదు !!
నేను వేరియబుల్స్ డిక్లేర్ చేస్తున్నప్పుడు ఇది ఇలా ఉంటుంది:
: ${OPTFOLDER:="/opt/"}
కానీ నేను ఎప్పుడూ ఇలాగే చేస్తున్నాను కాబట్టి, నిజాయితీగా తేడా ఏమిటో నాకు తెలియదు
@ KZKG ^ గారా
సరే నేను ప్రశ్న అడిగాను ఎందుకంటే నిజం నాకు తెలియదు, నేను సాధారణంగా స్లాక్బిల్డ్స్ వ్రాస్తాను మరియు నిజం ఏమిటంటే VAR1 లో ప్రకటించిన వేరియబుల్స్ ఈ స్క్రిప్ట్స్లో ఉన్నాయి. ఈ ప్రశ్నను స్పష్టం చేయడానికి శీఘ్ర గూగుల్ శోధన నాకు సహాయపడింది, నేను అందరితో పంచుకుంటాను, తద్వారా మనమందరం నేర్చుకోవచ్చు:
స్క్రిప్ట్:
http://pastebin.com/faAQb35w
వివరణ:
VAR = {AR VAR: -default_value form రూపం యొక్క వేరియబుల్స్ ప్రకటించడం అంటే, వేరియబుల్ VAR విలువ డిఫాల్ట్_వాల్యూను తీసుకుంటుంది మరియు విలువ శూన్యంగా ఉంటే లేదా ఉనికిలో లేకుంటే మాత్రమే.
ఆచరణాత్మక ఉదాహరణ:
స్క్రిప్ట్ను అమలు చేసేటప్పుడు, VAR వేరియబుల్లో నిల్వ చేయవలసిన విలువను ఎంటర్ చేయమని అడుగుతారు, ఏదైనా నమోదు చేయబడితే, అది ఎంటర్ చేసినదాన్ని చూపుతుంది. మనం దేనినీ ఎంటర్ చేసి ఎంటర్ నొక్కకపోతే వేరియబుల్ VAR ను శూన్యంగా ప్రకటిస్తున్నాము, కాబట్టి ఇది విలువ_డిఫాల్ట్ చూపిస్తుంది.
శుభాకాంక్షలు.
హా నాకు తెలియదు
సరే, చాలా ధన్యవాదాలు మిత్రమా ... వ్యాసం చివరలో నేను అర్థం చేసుకున్నాను, నేను ఏదో నేర్పించాలని అనుకోను మరియు అంతే, నేను ఇక్కడ ఎప్పుడూ క్రొత్తదాన్ని నేర్చుకుంటానని నాకు తెలుసు
శుభాకాంక్షలు మరియు మరోసారి ధన్యవాదాలు.
మీరు చెప్పింది నిజమే, ఇక్కడ ఒకరు చాలా విషయాలు నేర్చుకుంటారు.
శుభాకాంక్షలు మరియు సంతోషకరమైన సెలవులు !! 😀
అద్భుతమైన మరియు అద్భుతంగా వివరించిన +1, ఇది మిమ్మల్ని తీసుకున్న సమయం ...
కానీ నేను ప్రయత్నం విలువైనది
నేను కేవలం 80 రోజులో 1% వ్రాసాను, నా ఇంటర్నెట్ నన్ను అనుమతించనందున దానిని ప్రచురించడానికి నాకు చాలా సమయం పట్టింది.
మీ వ్యాఖ్యకు ధన్యవాదాలు
దీన్ని చేయటానికి మరొక మార్గం DNS ను ఉపయోగించడం, ఎందుకంటే కొన్నిసార్లు నెట్వర్క్లు ICMP ప్రోటోకాల్ నిరోధించబడతాయి:
(హోస్ట్ -టా IP-ADDRESS> / dev / null 2> & 1) && ఎకో "నెట్వర్క్కు కనెక్ట్ చేయబడింది"
ఈ ఉదాహరణలో రిటర్న్ వాల్యూ చెక్ అవ్యక్తంగా ఉందని మీరు గమనించవచ్చు
మీరు ఎల్లప్పుడూ స్నేహితుడిగా, నాకు పూర్తిగా తెలియని చిట్కాలతో హహా.
ధన్యవాదాలు, వ్యాఖ్య ప్రశంసించబడింది మరియు హే… నేను నేర్చుకున్న మరో క్రొత్త విషయం
Gracias
🙂
ఈ విషయం ప్రచురించబడి చాలా రోజులు గడిచినప్పటికీ, ఇది నాకు చాలా ఉపయోగపడింది, ఇప్పుడు నేను బాష్లో స్క్రిప్ట్ చేసాను .. ధన్యవాదాలు గారా ..
డాక్. మీరు నా కోసం విషయాలు స్పష్టం చేసిన సహాయానికి ధన్యవాదాలు.
ఒక ప్రశ్న, నేను ఎలా చేయగలను ఒక కంప్యూటర్ స్వయంచాలకంగా పింగ్ చేయడాన్ని ఆపివేసినప్పుడు మరొకటి IP ని మారుస్తుంది. నాకు ఇది ఉంది.
IP మార్చడానికి
#! / Bin / bash
ping -c 10 192.168.1.50 # అది స్వయంచాలకంగా పింగ్ చేయకపోతే
ifconfig eth0 192.168.1.50 నెట్మాస్క్ 255.255.255.0 ప్రసారం 192.168.1.0
ifconfig eth0 డౌన్
ifconfig eth0 అప్
ఎందుకంటే మీరు ప్రశ్న గుర్తును ఉపయోగిస్తే? ఉంచడం మధ్య తేడా ఏమిటి? ఏదైనా ఇతర లేఖ
$? అంటే 'మునుపటి అవుట్పుట్ లేదా అవుట్పుట్', అనగా మునుపటి ఆదేశం యొక్క ఫలితం ...
అదే ఫలితాన్ని సాధించడానికి మరొక మార్గం ఉంది, పింగ్ ఆదేశాన్ని నేరుగా ఒక వాదనగా పాస్ చేస్తే:
పింగ్-సి 1 IP-ADDRESS అయితే; అప్పుడు
ఎకో "అవును ఇది నెట్లో ఉంది"
వేరే
echo "నెట్వర్క్లో లేదు"
fi
ఏమి జరుగుతుందంటే, మీరు వాదనగా పంపిన ఆదేశం యొక్క తిరిగి విలువను అంచనా వేస్తే, అది 0 తిరిగి ఇస్తే అది నిజం, మరేదైనా తప్పు. చదరపు బ్రాకెట్లు పరీక్ష ఆదేశానికి సమానం. కానీ మీరు ఏదైనా ఆదేశాన్ని ఆర్గ్యుమెంట్గా పాస్ చేయవచ్చు (కమాండ్ కొంత విలువను ఇచ్చేంతవరకు).
హలో, నేను స్క్రిప్ట్లోని యూజర్ X తో స్క్రిప్ట్.షీని ఎలా అమలు చేయాలి, నేను యూజర్ Y ని సృష్టించాను, మరియు ఆ యూజర్ Y స్క్రిప్ట్ను అమలు చేస్తూనే ఉన్నాడు
ఇది చేయవచ్చా ??
చాలా ఆసక్తికరంగా, ధన్యవాదాలు!
సహకారానికి ధన్యవాదాలు, నేను xD ను అర్థం చేసుకోవడానికి ఒక గంట అయ్యాను, కానీ నేను అర్థం చేసుకున్నాను !!!!.
స్క్రిప్ట్ బాగుంది. అంకగణితంగా ఇది ($? == 0) సున్నాకి సమానంగా ఉంటే అది నెట్వర్క్లో లేదు, లేకపోతే అది నెట్వర్క్లో ఉంటుంది. ఇంకా కొంచెం ఇంటరాక్టివ్గా చేయాలనుకుంటే, మేము ఇలా చెప్పగలం:
echo -n IP ని నమోదు చేయండి:
ip చదవండి
ping -c 1 $ ip
హలో, నేను దీనికి చాలా కొత్తగా ఉన్నాను, నేను రీడ్ ద్వారా టికెట్ నంబర్ (ఆల్ఫాన్యూమరిక్) చేయడానికి ప్రయత్నిస్తున్నాను మరియు ఎంటర్ చేసిన వాటికి సరైన ఫార్మాట్ (ABC-123456) ఉంటే "x" ఆదేశాన్ని అమలు చేయాలని నేను కోరుకుంటున్నాను మరియు దీన్ని ఎలా చేయాలో నాకు తెలియదు, మీరు నాకు సహాయం చేయగలరా?
ఎకో "టికెట్ ఎంటర్"
read -p టికెట్
if టికెట్ = "తెలియదు (ABC-123456 ఫార్మాట్"); అప్పుడు cp file.txt $ టికెట్; లేకపోతే ప్రతిధ్వని "తప్పు ఆకృతి, మళ్ళీ ప్రయత్నించండి"; read -p; fi.
ఖచ్చితంగా ఇది భయంకరమైనది మరియు వారు హా హా నవ్వుతారు, కాని నేను చెప్పినట్లు నేను దీనితో ప్రారంభిస్తున్నాను.
నేను చెడుగా వివరిస్తే దయచేసి నాకు చెప్పండి మరియు నేను బాగా చేయటానికి ప్రయత్నిస్తాను.
అందరినీ కౌగిలించుకోండి.
అద్భుతమైన వివరణ, శుభాకాంక్షలు
if, else మరియు ఇతరులతో నాకు కొంచెం సందేహం ఉంది.
ఫైల్ ఉందో లేదో తనిఖీ చేయడానికి (లాగ్ ఫైల్) నాకు స్క్రిప్ట్ కావాలి మరియు లేకపోతే, దాన్ని సృష్టించి, ఆపై దానికి వ్రాయండి. కానీ అది ఉనికిలో ఉంటే నేను దానికి వ్రాయాలనుకుంటున్నాను.
నా దగ్గర ఉన్నది:
తేదీ=`తేదీ -R`
#నేను వేరియబుల్ తేదీని పరీక్షిస్తున్నాను, ఇది ప్రారంభానికి మధ్య అప్డేట్ చేయబడదు
#ప్రాసెస్ మరియు ముగుస్తుంది, కొన్నిసార్లు ఒక గంట గడిచిపోతుంది మరియు సరైన సమయం బయటకు రాదు.
అయితే [ -f /home/user/logs/test.log ];
అప్పుడు
/home/user/logs/test.logని తాకండి
వేరే
echo "$date: Updated" >> /home/user/logs/test.log
echo «———————————————-» >> /home/user/logs/test.log
fi
సిద్ధాంతంలో ఇది బాగానే ఉండాలి, కానీ వాస్తవానికి రిఫరెన్స్ చేసిన ఫైల్ ఇప్పటికే ఉన్నట్లయితే అది నవీకరించబడదు
క్షమించండి, అది పంపబడలేదని మరియు నకిలీ చేయబడిందని నేను చూశాను