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