Përshëndetje
Këtë herë do t'ju tregoj se si të bëni një skenar me kusht në Përplas, i cili përkthehet është:
Nëse bëhet X gjë që dëshironi, bëhet veprimi Y, nëse nuk bëhet atëherë bëhet një veprim tjetër.
Shpjegim i thjeshtë jo
Tani, kam menduar për disa minuta për disa shembuj për t'u përdorur në këtë manual, më ndodhi dilema / problemi / situata vijuese:
Ne jemi në rrjetin e kompanisë sonë dhe duam të dimë nëse kompjuteri X është i lidhur me rrjetin. Për këtë ne bëjmë një dorëshkrim çfarë do të bëjë ai ping drejt atij kompjuteri, dhe nëse është në një rrjet (domethënë, nëse e kthen ping) do të na tregojë se PO, është në rrjet, përndryshe (dmth. nuk është në rrjet) do të na tregojë se NUK është në rrjet.
Pasi të jetë bërë kjo, tani unë do të shpjegoj se si të ciklit me kushte
Këtu është kodi:
ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi
Mos u shqetëso, unë do të ta shpjegoj këtë në detaje
ping është komanda që do të përdorim dhe do të na tregojë nëse ai PC është në rrjet. Për t'ju thënë se cilin PC duam të kontrollojmë nëse është në rrjet apo jo, ne duhet të ndryshojmë ADRESA IP padyshim nga adresa IP e PC-së që duam të kontrollojmë.
Siç mund ta shihni, unë vendosi «-c 1«, Cila është e nevojshme për ne. Kur ping një kompjuter, ky veprim nuk ndalet (ping) derisa të shtypim veten [Ctrl] + [C], pra vendosja «-c 1»Ne i themi që të bëjë vetëm një verifikim (vetëm një përpjekje për ping) dhe asnjë tjetër, kjo do ta bëjë atë të ndalet menjëherë, dmth ... do të kontrollojë nëse kompjuteri është në rrjet vetëm një herë.
Nëse keni dyshime për këtë, pa dhimbje ... ata e thonë atë dhe unë do t'ua shpjegoj përsëri atyre again
Tani vjen cikli, sepse ajo që sapo shpjegova nuk është asgjë më shumë sesa një komandë / veprim normal ...
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi
Kështu që ta kuptoni këtë, unë do të shpjegoj një detaj jashtëzakonisht të rëndësishëm të Bash
Më të diturit e kësaj teme mund të më konsiderojnë si të gabuar ose diçka të tillë, por hej, unë e shkruaj këtë për fillestarët ose më pak ekspertë, për sa kohë që ata e kuptojnë atë atëherë shumë mirë
Ndodh që si në Përplas eshte dicka si 0 y 1, domethënë, ose jeni gjallë ose jeni i vdekur, kur ekzekutohet një komandë ose veprim: Ose ekzekutuar mirë Nuk ka problem (1), ose kishte ca problem ose gabim (0).
Ne kryejmë veprim ose komandë X, dhe ajo që kemi bërë mund të jetë kryer mirë ose keq, mund të ketë pasur një gabim ose jo, dhe këtu është detaji is
Nëse ajo që dërgojmë të bëjmë (në këtë rast: ping -c 1 IP-ADRESA) nuk dha një gabim dhe ishte i suksesshëm, kështu që do të kthejë vlerën: 1 . Përndryshe, dhe nëse veprimi (domethënë ping) nuk ishte i suksesshëm, ai do të kthejë vlerën 0.
Dhe së fundmi, ajo që do të thotë kodi i mësipërm është kjo:
Nëse vlera 0 kthehej atëherë
Shfaq tekstin: «Jo në rrjet»
Përndryshe (dhe ktheni JO 0, por 1)
Shfaq tekstin: «Nëse është në rrjet«
Kjo që sapo ju kam shpjeguar, do të na shërbejë në të ardhmen për shumë gjëra, sepse është vërtet e dobishme të thuash që nëse veprimi X dha një gabim, bëj veprimin Y, dhe në rast se veprimi X nuk ka dhënë një gabim, atëherë bëj veprimin Z.
Unë e di që disa mund të ngatërrohen disi, kështu që jam përpjekur ta shpjegoj atë në disa mënyra të ndryshme, duke u përpjekur t'i bëj të gjithë ta kuptojnë atë në një mënyrë apo në një tjetër. Në rast se ndokush lihet në dyshim, më tregoni.
Tani, le ta bëjmë skenarin tonë
Ne duhet të ndjekim hapat në këtë manual: Bash: Si të krijoni një skenar të ekzekutueshëm
Atëherë le të kopjojmë kodin vijues në atë skedar (skenari.sh), dhe në fund le të themi «dalje»(Pa thonjëza):
ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi
Duhet të duket kështu (mos harroni se ata duhet të kenë ndryshuar IP-ADRESN në IP që ata dëshirojnë):
Këtu mund të shihni skenarin e ekzekutimit:
% KODI1%
Siç mund ta shihni, në fund ai na thotë «Po është në rrjet»
Gjëja e rëndësishme këtu është që ata në të vërtetë e kuptojnë këtë nga kushtet, kështu që unë ju lë një kod tjetër për ta shpjeguar përsëri, por nga një këndvështrim tjetër.
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
Çfarë do të thotë kjo është e thjeshtë, unë e lë shpjegimin rresht pas rreshti:
Rreshti i parë: Ajo që shkruajmë, kjo do të jetë vlera e ndryshores «texting»(Pa thonjëza).
Rreshti i 2-të: Kontrolloni nëse është përmbajtja e ndryshores (ajo që sapo shkruam) 3.
Rreshti i parë: Në rast të qenies 3, do të na tregojë tekstin «Korrigjoni»(Pa thonjëza).
Rreshti i 4-të: Përndryshe (domethënë, në rast se nuk kemi shkruar 3).
Rreshti i 5-të: Do të na tregojë tekstin «i pasaktë»(Pa thonjëza).
Rreshti i 6-të: Fundi i gjendjes.
Siç kanë qenë në gjendje ta kuptojnë, nëse vendosim humbas dhe pastaj midis kuotave të dyfishta («) një tekst, kjo do të bëjë që ai tekst të shfaqet në terminal. Kjo është, nëse vendosim:
echo "esto es una prueba"
Do të na tregojë tekstin në terminal: ky eshte nje test
Por duke iu kthyer këtij shembulli të dytë, unë do t'ju tregoj dobinë (dhe ekzekutimin) e këtij skenari të dytë me diçka SHUM të thjeshtë - tipike «sa kushton 1 + 2?«
Unë lë kodin e skenarit të plotë:
#!/bin/bash
# -*- ENCODING: UTF-8 -*-
echo "¿Cuánto es 1 + 2?"
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
exit
Ja se si funksionon skenari:
% KODI2%
Dhe mirë ... asgjë më shumë për të shtuar.
Kjo është diçka elementare, e thjeshtë po, por prapë jam përpjekur ta shpjegoj sa më mirë, sepse jo të gjithë kanë shpirtin e një programuesi, dhe shumë herë na duhet të bëjmë skenare si këto (ose të ngjashme), në çdo rast shpresoj që ky artikull të jetë i dobishëm për ju dikush
Ndonjë dyshim apo pyetje, ankesë ose sugjerim ju lutem, lini këtu, unë me kënaqësi do t'ju përgjigjem dhe kështu, të gjithë mësojmë pak më shumë
të fala
Ju jeni një pro !!! * ose *
Nah për asgjë
Nëse ju ka shërbyer dhe është interesante, unë jam i kënaqur
Pershendetje shoku
@ KZKG ^ Gaara,
duke folur për programimin bash kam një pyetje:
Cili është ndryshimi midis deklarimit të një variabli si ky VAR = hello dhe deklarimit të tij si ky VAR = $ {VAR: -hello}?
Unë shpjegoj:
http://pastebin.com/a3cfWXeD
pershendetje
Përshëndetje
Epo, unë nuk jam aspak ekspert në bash ... në të vërtetë, nuk kam ide LOL !!
Ndërsa deklaroj ndryshoret është kështu:
: ${OPTFOLDER:="/opt/"}
Por, sepse gjithmonë e bëja kështu, nuk e di cili ndryshim mund të jetë sinqerisht
@ KZKG ^ Gaara
Epo bëra pyetjen sepse e vërteta është se as unë nuk e dija, unë zakonisht shkruaj SlackBuilds dhe e vërteta është se ndryshoret e deklaruara si në VAR1 janë me bollëk në këto skenare. Një kërkim i shpejtë në google më ndihmoi të sqaroja këtë pyetje, unë e ndaj me të gjithë në mënyrë që të gjithë të mësojmë:
script:
http://pastebin.com/faAQb35w
Shpjegim:
Deklarimi i variablave të formës VAR = $ {VAR: -default_value} do të thotë që variabli VAR do të marrë vlerën e paracaktuar_ dhe nëse vetëm vlera është null ose nuk ekziston.
Shembull praktik:
kur ekzekuton skriptin, ai kërkon të fusë një vlerë që do të ruhet në ndryshoren VAR, nëse futet diçka do të tregojë se çfarë është futur. Nëse nuk fusim asgjë dhe shtypim enter po deklarojmë ndryshoren VAR si null, prandaj tregon vlerën e paracaktuar.
Përshëndetje.
HAHA nuk e dija se
Ok, faleminderit shumë mik ... kjo është ajo që unë doja të thoja me fundin e artikullit, unë nuk kam ndërmend të mësoj diçka dhe kaq, unë e di që gjithmonë do të mësoj diçka të re këtu
Përshëndetje dhe faleminderit edhe një herë.
ke te drejte, njeriu meson disa gjera ketu.
pershendetje dhe gezuar festat !! 😀
Shumë e mirë dhe e shpjeguar në mënyrë të shkëlqyeshme +1, koha që do t'ju marrë ...
por ja vlen te mundohem
Në të vërtetë unë kam shkruar 80% në vetëm 1 ditë, më është dashur kaq shumë kohë për ta publikuar vetëm sepse interneti im nuk më lejonte.
Faleminderit për komentin tuaj
Një mënyrë tjetër për ta bërë atë është përdorimi i DNS, pasi ndonjëherë rrjetet kanë bllokuar protokollin ICMP:
(host -ta IP-ADDRESS> / dev / null 2> & 1) && jehona "Lidhur me rrjetin"
Ju gjithashtu do të vini re se në këtë shembull kontrolli i vlerës së kthimit është i nënkuptuar
Ju si gjithmonë mik, me sugjerime që nuk i njoh plotësisht HAHAHA.
Faleminderit, komenti vlerësohet dhe hehe ... një tjetër gjë e re që unë mësoj
Falënderim
🙂
Edhe pse kanë kaluar disa ditë nga botimi i kësaj teme, ajo më ka shërbyer shumë, tani që bëra një skenar në bash .. Faleminderit Gaara ..
Doc. Faleminderit për ndihmën që i bëtë të qarta për mua.
Thjesht një pyetje, si ta bëj që kur një kompjuter të ndalojë së pinguari automatikisht, tjetri të ndryshojë IP. Unë e kam këtë
për të ndryshuar IP-në
#! / bin / bash
ping -c 10 192.168.1.50 # nëse nuk ping automatikisht
ifconfig eth0 192.168.1.50 netmask 255.255.255.0 transmetuar 192.168.1.0
ifconfig eth0 poshtë
ifconfig eth0 lart
sepse kur krahason me nëse e përdor pikëpyetjen? çfarë ndryshimi ka midis vendosjes së? ndonjë letër tjetër
$? do të thotë 'dalja ose dalja e mëparshme', që do të thotë, në rast se rezultati i komandës së mëparshme ...
Ekziston një mënyrë tjetër për të arritur të njëjtin rezultat, duke kaluar komandën ping direkt si argument nëse:
nëse ping -c 1 IP-ADRESA; atëherë
jehona "Po është në internet"
tjetër
jehona "Jo në rrjet"
fi
Ajo që ndodh është që nëse vlerëson vlerën e kthimit të komandës që kaloni si argument, nëse kthen 0 është e vërtetë, gjithçka tjetër është e gabuar. Kllapat katrore janë ekuivalente me komandën e provës. Por ju mund të kaloni çdo komandë si argument (për sa kohë që komanda kthen ndonjë vlerë).
Përshëndetje, si mund ta ekzekutoj një script.sh me një përdorues X në skenar Unë krijoj një përdorues Y, dhe ai përdorues Y vazhdon ekzekutimin e skriptit.sh
A mund te behet kjo ??
Shumë interesante, faleminderit!
Faleminderit për kontributin, kam një orë që e kuptoj xD, por e kuptova !!!!.
Skenari është në rregull. Aritmetikisht, mund të bëhet edhe si ($? == 0) nëse është e barabartë me zero nuk është në rrjet, përndryshe është në rrjet. Dhe nëse akoma duam ta bëjmë pak më interaktive mund të themi:
echo -n Vendosni IP:
lexo ip
ping -c 1 $ ip
Përshëndetje, unë jam shumë i ri për këtë, po përpiqem të bëj një numër bilete (alfanumerik) përmes një leximi dhe dua që nëse ajo që futet të ketë formatin e duhur (ABC-123456) të ekzekutojë një komandë "x" dhe unë nuk ' t di ta bësh, a mund të më ndihmosh?
jehona "Fut biletën"
lexo -p biletë
nëse $ biletë = "asnjë ide (formati ABC-123456"); pastaj cp file.txt $ biletë; tjetër jehonë "Formati i gabuar, provo përsëri"; lexo -p; fi
Sigurisht që është e tmerrshme dhe ata qeshin haha, por siç thashë unë po filloj me këtë.
Nëse e shpjegoj keq, ju lutem më tregoni dhe përpiqem të bëj më mirë.
Përqafoni të gjithë.
Shpjegim i shkëlqyeshëm, përshëndetje
Unë kam pak dyshime me if, else dhe të tjerët.
Unë dua një skript për të kontrolluar nëse ekziston një skedar (një nga regjistrat) dhe nëse jo, për ta krijuar atë dhe më vonë për të shkruar në të. Por nëse ekziston, unë dua që ju thjesht t'i shkruani.
Ajo që kam është:
data = `data -R`
#Po testoja datën e variablit, e cila nuk përditësohet midis fillimit të a
#proces dhe përfundon, ndonjëherë mund të kalojë një orë dhe koha e duhur nuk del.
nëse [-f /home/user/logs/test.log];
pastaj
prek /home/usuario/logs/test.log
tjetër
jehonë "$ data: Përditësuar" >> /home/user/logs/test.log
jehonë «————————————————-» >> /home/user/logs/test.log
fi
Në teori duhet të jetë mirë, por realiteti është se nuk përditësohet nëse skedari i referuar tashmë ekziston
me fal, e pashe qe nuk eshte derguar dhe eshte dyfishuar