Ĉi-foje mi montros al vi kiel krei skripton kun kondiĉo en Bash, kiu tradukita estas:
#000001
Se X-afero, kiun vi volas, plenumas, Y-ago plenumiĝas, se ĝi ne plenumiĝas, tiam alia ago plenumiĝas.
#000002
Nun, mi pensis dum kelkaj minutoj pri iu ekzemplo uzota en ĉi tiu lernilo, la sekva dilemo / problemo / situacio okazis al mi:
#000003
Ni estas en la reto de nia kompanio, kaj ni volas scii ĉu X-komputilo estas konektita al la reto. Por ĉi tio ni faras skripto kion li faros ping al tiu komputilo, kaj se ĝi estas en reto (tio estas, se ĝi redonas la ping) diros al ni, ke JES, ĝi estas en la reto, alie (tio estas, ĝi ne estas en la reto) ĝi diros al ni, ke ĝi NE estas en la reto.
#000004
Post kiam ĉi tio estos farita, nun mi klarigos kiel bicikli kun kondiĉoj 🙂
#000005
Ne zorgu, mi klarigos ĉi tion al vi detale 😉
#000007
ping estas la komando, kiun ni uzos, kaj ĝi diros al ni, ĉu tiu komputilo estas en la reto. Por diri al vi, kiun komputilon ni volas kontroli, ĉu ĝi estas en la reto aŭ ne, ni devas ŝanĝi IP-ADRESO evidente per la IP-adreso de la komputilo, kiun ni volas kontroli.
#000008
Kiel vi vidas, mi metis «-c 1«, Kiu estas necesa por ni. Kiam ni pingas komputilon, ĉi tiu ago ne ĉesas (la ping) ĝis ni premas nin mem [Ctrl] + [C], do metante «-c 1»Ni diras al vi, ke vi faru nur unu kontrolon (nur unu ping-provo) kaj neniun alian, ĉi tio haltigos ĝin tuj, tio estas ... ĝi kontrolos, ĉu la komputilo estas en la reto nur unufoje.
#000009
Se vi havas dubojn pri tio, neniu doloro ... ili diras tiel kaj mi volonte klarigos ĝin al vi denove 😉
#000010
Nun venas la ciklo, ĉar tio, kion mi ĵus klarigis, estas nur normala komando / ago 😀
#000011
Por ke vi komprenu ĉi tion, mi klarigos ekstreme gravan detalon pri Bash 🙂
#000012
La plej sperta pri la temo povus taksi min kiel malĝusta aŭ io simila, sed hej, mi skribas ĉi tion por la novuloj aŭ malpli da spertuloj, se ili komprenas ĝin tiam bonega
#000013
Okazas, ke kiel en Bash ĝi estas io tia 0 y 1, tio estas, aŭ vi vivas aŭ vi mortis, kiam ordono aŭ ago estas plenumita: Aŭ bone ekzekutita Nedankinde (1), aŭ estis iuj problemo aŭ eraro (0).
#000014
Ni plenumas X-agon aŭ ordonon, kaj tio, kion ni faris, eble bone aŭ malbone plenumiĝis, ĝi eble havis eraron aŭ ne, kaj jen la detalo 😉
#000015
Se kion ni sendas fari (ĉi-kaze: ping -c 1 IP-ADRESO) ne donis eraron kaj sukcesis, do ĝi redonos la valoron: 1 . Alie, kaj se la ago (tio estas, la ping) ne sukcesis, ĝi redonos valoron 0.
#000016
Kaj fine, kion signifas la supra kodo, jen:
#000017
Se valoro 0 estis redonita tiam
#000018
Montri la tekston: «Ne en reto»
#000019
Alie (kaj redonu NE 0, sed 1)
#000020
Montri la tekston: «Se ĝi estas en reto«
#000021
Ĉi tio, kiun mi ĵus klarigis al vi, utilos al ni estontece por multaj aferoj, ĉar estas vere utile povi diri, ke se X-ago donis eraron, faru Y-agon, kaj se X-ago ne donis eraron, lasu Z-agon.
#000022
Mi scias, ke iuj povus iom konfuziĝi, do mi provis klarigi ĝin per diversaj manieroj, provante igi ĉiujn kompreni ĝin tiamaniere. Kaze ke iu restos en dubo, sciigu min.
#000023
Nun ni kreu nian skripton 😀
#000024
Ni devas sekvi la paŝojn en ĉi tiu lernilo: Bash: Kiel fari plenumeblan skripton
#000025
Tiam ni kopiu la sekvan kodon en tiun dosieron (skripto.sh), kaj fine ni diru «eliro»(Sen la citiloj):
#000026
Ĝi devus aspekti tiel (memoru, ke ili certe ŝanĝis la IP-ADRESON al la IP, kiun ili volas):
#000027
Ĉi tie vi povas vidi la kurantan skripton:
#000028
Kiel vi vidas, finfine li diras al ni «Jes ĝi estas en reto»🙂
#000029
La grava afero ĉi tie estas, ke ili efektive komprenas ĉi tion pri la kondiĉoj, do mi lasas al vi alian kodon por klarigi ĝin denove, sed el alia vidpunkto.
#000030
Kion ĉi tio signifas estas simpla, mi lasas la klarigon linion post linio:
#000031
Unua linio: Kion ni skribas, tio estos la valoro de la variablo «texting»(Sen la citiloj).
#000032
Dua linio: Kontrolu ĉu la enhavo de la variablo (kion ni ĵus skribis) estas 3.
#000033
Unua linio: En kazo de esti 3, ĝi montros al ni la tekston «Correcto»(Sen la citiloj).
#000034
4-a linio: Alie (tio estas, se ni ne skribis 3).
#000035
5-a linio: Ĝi montros al ni la tekston «Nekorekta»(Sen la citiloj).
#000036
Kiel ili povis konstati, se ni diros eĥo kaj tiam inter duoblaj citiloj («) teksto, tio igos tiun tekston montriĝi en la terminalo. Tio estas, se ni metas:
#000038
echo "esto es una prueba"
#000039
Ĝi montros al ni la tekston en la fina stacio: ĉi tio estas provo
#000040
Sed revenante al ĉi tiu dua ekzemplo, mi montros al vi la utilecon (kaj plenumadon) de ĉi tiu dua skripto kun io TRE simpla 😀 ... la tipa «kiom kostas 1 + 2?«
#000041
Mi lasas la kodon de la kompleta skripto:
#000042
Jen kiel funkcias la skripto:
#000043
Kaj nu ... nenion pli por aldoni.
#000044
Ĉi tio estas io elementa, simpla jes, sed tamen mi provis klarigi ĝin kiel eble plej bone, ĉar ne ĉiuj havas la animon de programisto, kaj multfoje ni bezonas fari skriptojn kiel ĉi tiuj (aŭ similaj), ĉiukaze mi esperas, ke ĉi tiu artikolo utilos al vi iu 🙂
#000045
Ajna dubo aŭ demando, plendo aŭ sugesto bonvolu lasi ĝin ĉi tie, mi volonte respondos al vi kaj tiel, ni ĉiuj lernas iom pli 😀
#000046
La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.
#000047
26 komentoj, lasu la viajn
#000049
Lasu vian komenton Nuligi respondon
#000050
Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *
#000051
Mi akceptas la privateco terminoj*
#000052
Respondeculo pri la datumoj: Miguel Ángel Gatón
Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.
#000053
Se ĝi servis vin kaj ĝi estas interesa, mi estas kontenta 😉
#000056
parolante pri bash-programado, mi havas demandon:
#000057
Nu, mi tute ne spertas pri bash ... efektive, mi tute ne scias LOL !
Dum mi deklaras la variablojn, ĝi estas tiel:
Sed ĉar mi ĉiam tiel faris, mi ne scias, kio povus esti la diferenco honeste 🙁
#000058
Nu, mi tute ne spertas pri bash ... efektive, mi tute ne scias LOL !
Dum mi deklaras la variablojn, ĝi estas tiel:
#000059
Sed ĉar mi ĉiam tiel faris, mi ne scias, kio povus esti la diferenco honeste 🙁
#000060
Nu mi demandis la demandon ĉar la vero estas, ke ankaŭ mi ne sciis, mi kutime verkas SlackBuilds kaj la vero estas, ke variabloj deklaritaj kiel en VAR1 abundas en ĉi tiuj skriptoj. Rapida gugla serĉo helpis min klarigi ĉi tiun demandon, mi dividas ĝin kun ĉiuj por ke ni ĉiuj lernu:
#000061
Dum plenumado de la skripto, oni petas enigi valoron konservotan en la variablo VAR, se io estas enirita, ĝi montros tion, kio estis enirita. Se ni enigas ion kaj premas enen, ni deklaras la variablon VAR kiel nula, tial ĝi montras value_default.
#000062
Bone, dankegon amiko ... tion mi celis per la fino de la artikolo, mi ne intencas instrui ion kaj jen, mi scias, ke mi ĉiam lernos ion novan ĉi tie 😀
vi pravas, oni lernas plurajn aferojn ĉi tie.
salutojn kaj feliĉajn festojn ! 😀
#000063
Bone, dankegon amiko ... tion mi celis per la fino de la artikolo, mi ne intencas instrui ion kaj jen, mi scias, ke mi ĉiam lernos ion novan ĉi tie 😀
#000064
vi pravas, oni lernas plurajn aferojn ĉi tie.
salutojn kaj feliĉajn festojn ! 😀
#000065
vi pravas, oni lernas plurajn aferojn ĉi tie.
#000066
salutojn kaj feliĉajn festojn ! 😀
#000067
Terura kaj bonege klarigita +1, la tempo, kiun ĝi prenis al vi ...
sed mi valoras la penon 😉
#000068
Fakte mi skribis 80% en nur 1 tago, mi bezonis tiel longe publikigi ĝin nur ĉar mia interreto ne permesis al mi.
Dankon pro via komento 😉
#000069
Alia maniero fari ĝin estas uzi DNS, ĉar kelkfoje retoj havas ICMP-protokolon blokita:
#000070
Vi ankaŭ rimarkos, ke en ĉi tiu ekzemplo la revena valora kontrolo estas implicita 😉
#000072
Vi kiel ĉiam amiko, kun konsiloj, kiujn mi ne scias tute HAHAHA.
Dankon, la komento dankas kaj hehe ... alia nova afero, kiun mi lernas 😀
#000073
Kvankam kelkaj tagoj pasis post la publikigo de ĉi tiu temo, ĝi multe servis al mi, nun kiam mi faris skripton en bash. Dankon Gaara ..
#000074
Nur demando, kiel mi faras, ke kiam unu komputilo ĉesas pingi aŭtomate la alia ŝanĝas IP. Mi havas ĉi tion.
#000076
ĉar kiam vi komparas kun la se vi uzas la demandosignon? kia diferenco estas inter meti la? iu ajn alia letero
#000077
$? signifas 'la antaŭa eligo aŭ eligo', tio estas, se la rezulto de la antaŭa komando ... 🙂
Estas alia maniero atingi la saman rezulton, pasante la komandon ping rekte kiel argumenton al se:
eoo "Jes, ĝi estas en la reto"
eoo "Ne en la reto"
Kio okazas estas, ke se taksas la redonan valoron de la komando, kiun vi pasigas kiel argumenton, se ĝi redonas 0, ĝi estas vera, ĉio alia estas falsa. La kvadrataj krampoj samvaloras al la testkomando. Sed vi povas pasigi iun ajn komandon kiel argumenton (kondiĉe ke la komando redonas iun valoron).
#000078
$? signifas 'la antaŭa eligo aŭ eligo', tio estas, se la rezulto de la antaŭa komando ... 🙂
#000079
Estas alia maniero atingi la saman rezulton, pasante la komandon ping rekte kiel argumenton al se:
eoo "Jes, ĝi estas en la reto"
eoo "Ne en la reto"
Kio okazas estas, ke se taksas la redonan valoron de la komando, kiun vi pasigas kiel argumenton, se ĝi redonas 0, ĝi estas vera, ĉio alia estas falsa. La kvadrataj krampoj samvaloras al la testkomando. Sed vi povas pasigi iun ajn komandon kiel argumenton (kondiĉe ke la komando redonas iun valoron).
#000080
Estas alia maniero atingi la saman rezulton, pasante la komandon ping rekte kiel argumenton al se:
#000081
Kio okazas estas, ke se taksas la redonan valoron de la komando, kiun vi pasigas kiel argumenton, se ĝi redonas 0, ĝi estas vera, ĉio alia estas falsa. La kvadrataj krampoj samvaloras al la testkomando. Sed vi povas pasigi iun ajn komandon kiel argumenton (kondiĉe ke la komando redonas iun valoron).
#000083
Saluton, kiel mi ekzekutas script.sh kun uzanto X en la skripto mi kreas uzanton Y, kaj tiu uzanto Y daŭre plenumas la script.sh
#000084
Ĉu tio povas esti farita ?
#000085
Dankon pro la kontribuo, mi estis horo por kompreni ĝin xD, sed mi komprenis ĝin !.
#000086
La skripto bonas. Aritmetike ĝi povus fariĝi ankaŭ kiel ($? == 0) se ĝi egalas al nulo, ĝi ne estas en la reto, alie ĝi estas en la reto. Kaj se ni ankoraŭ volas fari ĝin iom pli interaga, ni povas diri:
echo -n Enigu la IP:
#000087
Saluton, mi tre novas pri tio, mi provas krei biletan numeron (alfanombran) per legado kaj mi volas, ke se tio, kio estas enirita, havas la ĝustan formaton (ABC-123456), plenumu ordonon "x" kaj mi ne scias kiel fari ĝin, ĉu vi povus helpi min?
#000088
se $ bileto = "neniu ideo (formato ABC-123456"); tiam cp file.txt $ bileto; else eoas "Malĝusta formato, reprovu"; legi -p; fi.
#000089
Certe ĝi estas terura kaj ili ridas haha, sed kiel mi diris, mi ĵus komencas kun ĉi tio.
#000090
Se mi malbone klarigas bonvolu diri al mi kaj mi provas fari pli bone.
#000091
Mi iom dubas pri se, alia kaj aliaj.
Mi volas skripton por kontroli ke dosiero ekzistas (unu el protokoloj) kaj se ne, por krei ĝin kaj poste skribi al ĝi. Sed se ĝi ekzistas, mi volas, ke vi nur skribu al ĝi.
#000092
#Mi estis provanta varian daton, kiu ne estas ĝisdatigita inter la komenco de a
#proceso kaj finiĝas, foje povas pasi horo kaj la ĝusta tempo ne eliras.
#000093
En teorio ĝi devus esti bone, sed la realo estas ke ĝi ne estas ĝisdatigita se la referencita dosiero jam ekzistas
#000095
pardonu, mi vidis, ke ĝi ne estis sendita kaj ĝi duobliĝis
#000096
Novaĵoj en via retpoŝtoAkiru la plej novajn Linuksajn novaĵojn en via retpoŝto
Mi akceptas la jurajn kondiĉojn
#000097