Bash: Шароит (if-then-else)

Салом 😀

Ин дафъа ман ба шумо нишон медиҳам, ки чӣ гуна скрипт тартиб додан лозим аст Bash, ки тарҷума шудааст:

Агар X чизе, ки шумо мехоҳед иҷро карда шавад, амали Y иҷро карда мешавад, агар он иҷро нашуда бошад, пас амали дигар анҷом дода мешавад.

Шарҳи оддии no 😀

Ҳоло, ман якчанд дақиқа дар бораи баъзе мисолҳо барои истифода дар ин дастур фикр кардам, ки дар назди ман чунин мушкилот / мушкилот / вазъият пайдо шуд:

Мо дар шабакаи ширкати худ ҳастем ва мехоҳем бидонем, ки оё X компютер ба шабака пайваст аст. Барои ин мо як барномаи саҳнавӣ ӯ чӣ кор хоҳад кард пинг ба сӯи он компютер ва агар он дар шабака бошад (яъне агар баргардад пинг) ба мо мегӯяд, ки ҲА, он дар шабака аст, вагарна (яъне он дар шабака нест) ба мо мегӯяд, ки он дар шабака НЕСТ.

Пас аз анҷом ёфтани ин, акнун ман мефаҳмонам, ки чӣ гуна бо шароити cycle давр занед

Ин аст коди:

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Парво накунед, ман инро ба шумо муфассал шарҳ медиҳам 😉

пинг фармонест, ки мо истифода хоҳем кард ва он ба мо мегӯяд, ки оё ин компютер дар шабака аст. Барои ба шумо гуфтани кадом компютер, ки мо мехоҳем тафтиш кунем, ки оё он дар шабака аст ё не, мо бояд тағир диҳем IP-АДРЕС аз афташ суроғаи IP-и компютерро мо тафтиш кардан мехоҳем.

Тавре ки шумо мебинед, ман «-в 1«, Ки барои мо зарур аст. Вақте ки мо компютерро пинг мекунем, ин амал қатъ намешавад (пинг) то мо худро пахш накунем [Ctrl] + [C], пас гузоштани «-в 1»Мо ба он мегӯем, ки танҳо як санҷишро иҷро кунад (танҳо як кӯшиши пинг), на дигар, ин онро фавран қатъ мекунад, яъне… танҳо як маротиба дар шабака будани компютерро месанҷад.

Агар шумо ба ин шубҳа дошта бошед, дард надоред ... онҳо мегӯянд ва ман бо хурсандӣ бори дигар инро ба онҳо мефаҳмонам 😉

Ҳоло давра меояд, зеро он чизе, ки ман фақат шарҳ додам, ҷуз як фармон / амали муқаррарӣ нест 😀

if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Барои он ки шумо инро фаҳмед, ман як ҷузъиёти фавқулодда муҳимро шарҳ медиҳам 🙂

Дониши бештари ин мавзӯъ метавонад маро нодуруст ё чизи ба ин монанд нишон диҳад, аммо эй ман, инро барои наваскарон ё камтар мутахассисон менависам, ба шарте ки онҳо инро дарк кунанд then

Ин ҳодиса рӯй медиҳад, ки дар Bash он чизе монанд аст 0 y 1, яъне, вақте ки фармон ё амал иҷро мешавад, шумо зиндаед ё мурдаед: Ё хуб иҷро шудааст Масъалае нест (1), ё баъзе буд мушкилот ё хатогӣ (0).

Мо амал ё фармони X -ро иҷро мекунем ва он чизе ки мо кардаем, шояд хуб ё бад иҷро шуда бошад, шояд хато дошта бошад ё на ва ин аст, ки тафсилот 😉

Агар он чизе, ки мо фиристодем (дар ин ҳолат: пинг -c 1 IP-АДРЕС) хатогӣ надод ва он муваффақ шуд, бинобар ин арзиши онро бармегардонад: 1 . Дар акси ҳол, ва агар амал (яъне пинг) муваффақ нашуд, он арзиши худро бармегардонад 0.

 Ва дар ниҳоят, рамзи боло маънои онро дорад:

Агар арзиши 0 пас баргардонида шуда бошад

Матнро намоиш диҳед: «На дар шабака»

Дар акси ҳол (ва баргардонед НЕ 0, аммо 1)

Матнро намоиш диҳед: «Агар он дар шабака бошад«

Инро, ки ман ҳоло ба шумо фаҳмондам, дар оянда аз бисёр ҷиҳат ба мо хидмат хоҳад кард, зеро гуфтан ҳақиқатан муфид аст, ки агар амали X хато карда бошад, амали Y-ро иҷро кунед ва дар сурате, ки амали X ба он чизе надода бошад хато, пас амали Z -ро иҷро кунед.

Ман медонам, ки шояд баъзеҳо каме ҳамроҳ шаванд, аз ин рӯ ман кӯшиш кардам, ки онро бо чанд роҳ шарҳ диҳам ва кӯшиш кардам, ки ҳама ин ё он тарзро фаҳманд. Агар касе дар шубҳа монад, ба ман хабар диҳед.

Ҳоло, биёед скрипти худро созем 😀

Мо бояд қадамҳои ин дастурро иҷро намоем: Bash: Чӣ гуна бояд скрипти иҷрошаванда сохт

Пас биёед коди зеринро ба он файл нусхабардорӣ кунем (скрипт.ш), ва дар охир бигӯем «баромадан»(Бе нохунак):

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: Он чизе ки мо менависем, он арзиши тағирёбанда хоҳад буд «texting»(Бе нохунакҳо).

Сатри 2: Тафтиш кунед, ки мундариҷаи тағирёбанда (он чизе, ки мо танҳо навиштем) 3.

Сатри 3: Дар сурати будан 3, он ба мо матни «Тафтиш»(Бе нохунакҳо).

Сатри 4: Дар акси ҳол (яъне, агар мо 3 нанависем).

Сатри 5: Он ба мо матни «Нодуруст аст»(Бе нохунакҳо).

Сатри 6: Анҷоми шарт.

Тавре ки онҳо тавонистанд дарк кунанд, агар бигӯем echo ва он гоҳ байни нохунакҳои дугона («) матн, ин боиси он мегардад, ки он матн дар терминал намоиш дода мешавад. Яъне, агар гузорем:

echo "esto es una prueba"

Он матнро дар терминал ба мо нишон медиҳад: ин озмоиш аст

Аммо ба ин мисоли дуюм баргашта, ман ба шумо фоиданокии (ва иҷрои) ин скрипти дуюмро бо як чизи хеле оддӣ нишон медиҳам 😀… маъмулӣ «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 шарҳ, аз они шумо

Назари худро бинависед

Суроғаи почтаи электронии шумо нест, нашр карда мешавад.

*

*

  1. Масъул барои маълумот: Мигел Анхел Гатан
  2. Мақсади маълумот: Назорати СПАМ, идоракунии шарҳҳо.
  3. Қонунӣ: Розигии шумо
  4. Иртиботи маълумот: Маълумот ба шахсони сеюм расонида намешавад, ба истиснои ӯҳдадориҳои қонунӣ.
  5. Нигоҳдории маълумот: Пойгоҳи додаҳо аз ҷониби Occentus Networks (ИА) ҷойгир карда шудааст
  6. Ҳуқуқҳо: Ҳар лаҳза шумо метавонед маълумоти худро маҳдуд, барқарор ва нест кунед.

  1.   Ҷалс Диго

    Шумо ҷонибдори !!! * ё *

    1.    КЗКГ ^ Гаара Диго

      На барои беҳуда 😀
      Агар он ба шумо хидмат карда бошад ва ҷолиб бошад, ман қаноатмандам 😉

      Салом дӯст

  2.   дуруст Диго

    @ KZKG ^ Гаара,
    дар бораи барномасозии bash сухан ронда, ман як савол дорам:
    Фарқи байни чунин эълони тағирёбанда ба монанди VAR = салом ва ба чунин эълон кардани VAR = $ {VAR: -салом} чист?

    Ман мефаҳмонам:
    http://pastebin.com/a3cfWXeD

    салом 😉

    1.    КЗКГ ^ Гаара Диго

      Салом 😀
      Хуб, ман аслан мутахассиси баш нестам ... дарвоқеъ, ман тасаввуре надорам ЛОЛ !!
      Вақте ки ман тағирёбандаҳоро эълон мекунам, чунин аст:
      : ${OPTFOLDER:="/opt/"}

      Аммо азбаски ман инро ҳамеша ин тавр мекардам, ман намедонам, ки чӣ фарқ метавонад ростқавл бошад 🙁

  3.   дуруст Диго

    @ KZKG ^ Гаара
    Хуб, ман савол додам, зеро ҳақиқат ин аст, ки ман ҳам намедонистам, ман одатан SlackBuilds менависам ва ҳақиқат ин аст, ки тағирёбандаҳое, ки дар VAR1 эълон шудаанд, дар ин скриптҳо зиёданд. Ҷустуҷӯи фаврии гугл ба ман кӯмак кард, ки ин саволро аниқтар кунам, ман онро бо ҳама мубодила мекунам, то ҳамаи мо омӯзем:

    Скрипт:
    http://pastebin.com/faAQb35w

    Шарҳ:
    Эълони тағирёбандаҳои шакли VAR = $ {VAR: -default_value} маънои онро дорад, ки тағирёбандаи VAR аҳамияти default_value мегирад, агар он танҳо сифр бошад ё мавҷуд набошад.

    Мисоли амалӣ:
    Ҳангоми иҷрои скрипт аз ӯ хоҳиш карда мешавад, ки арзиши дар тағирёбандаи VAR ҳифзшударо ворид кунад, агар чизе ворид карда шавад, он нишон медиҳад, ки чӣ дохил карда шудааст. Агар мо чизе ворид накунем ва enter -ро пахш намоем, мо тағирёбандаи VAR-ро бекор эълон мекунем, бинобар ин он value_default -ро нишон медиҳад.

    Ташаккур.

    1.    КЗКГ ^ Гаара Диго

      HAHA Ман инро намедонистам 😀
      Хуб, ташаккури зиёд ба дӯстам ... ман инро дар охири мақола дар назар доштам, ман ният надорам чизеро омӯзонам ва ҳамин тавр аст, ман медонам, ки ман ҳамеша чизи наверо дар ин ҷо меомӯзам 😀

      Бори дигар салом ва ташаккур.

      1.    дуруст Диго

        дуруст мегӯед, кас дар ин ҷо якчанд чизро меомӯзад.

        салом ва идҳои муборак !! 😀

  4.   Лукас Матиас Диго

    Хеле хуб ва ба таври аъло шарҳ дода шудааст +1, вақти он шуморо гирифтааст ...
    аммо ман сазовори кӯшиш ҳастам 😉

    1.    КЗКГ ^ Гаара Диго

      Ман воқеан дар тӯли 80 рӯз 1% навишта будам, барои навиштани он ба ман он қадар тӯл кашид, ки интернети ман иҷозат намедиҳад.
      Ташаккур барои шарҳи худ 😉

  5.   Уго Диго

    Роҳи дигари ин кор истифодаи DNS аст, зеро баъзан шабакаҳо протоколи ICMP-ро бастаанд:

    (host -ta IP-ADDRESS> / dev / null 2> & 1) && echo "Ба шабака пайваст карда шудааст"

    Шумо инчунин мебинед, ки дар ин мисол тафтиши арзиши баргаштан 😉 номуайян аст

    1.    КЗКГ ^ Гаара Диго

      Шумо ҳамчун ҳамеша дӯст, бо маслиҳатҳое, ки ман пурра намедонам HAHAHA.
      Ташаккур, шарҳ қадр карда мешавад ва хе ... чизи наве, ки ман меомӯзам 😀

  6.   Датукс Диго

    Gracias

    🙂

  7.   Махав_Иван Диго

    Гарчанде ки аз нашри ин мавзӯъ якчанд рӯз сипарӣ шуда бошад ҳам, он ба ман хидмати калон расонд, акнун, вақте ки ман скриптро бо забон таҳия кардам .. Ташаккур Гаара ..

  8.   Эдгар Наварро Диго

    Ташаккур барои кӯмаке, ки шумо барои ман чизҳоро равшан сохтед.

    Танҳо як дархост, чӣ гуна бояд кард, то вақте ки як компютер пингро ба таври худкор қатъ кунад, дигараш IP-ро иваз мекунад. Ман инро дорам.

    барои тағир додани IP
    #! / bin / bash
    ping -c 10 192.168.1.50 # Агар он ба таври худкор пинг накунад
    ifconfig eth0 192.168.1.50 netmask 255.255.255.0 пахши 192.168.1.0
    ifconfig eth0 поён
    ifconfig eth0 боло

  9.   Иброҳим Диго

    зеро ҳангоми муқоиса бо агар аломати саволро истифода баред? байни гузоштани ҳарфи дигаре

    1.    КЗКГ ^ Гаара Диго

      $? маънои 'баромади қаблӣ ё натиҷаи' қаблро дорад, яъне дар сурати натиҷаи фармони қаблӣ ... 🙂

      1.    Андрес Диго

        Боз як роҳи ба даст овардани ҳамон натиҷа мавҷуд аст, ки фармони ping -ро мустақиман ҳамчун далел ба ин шакл гузаронед, агар:

        агар пинг -c 1 IP-АДРЕС; пас
        акси садо "Бале он дар шабака"
        боз
        ҳамовозии "На дар шабака"
        fi

        Чӣ ҳодиса рӯй медиҳад, ки агар арзиши баргардонидани фармонро, ки шумо ҳамчун далел мегузаронед, арзёбӣ кунад, агар он 0 баргардонад, дуруст аст, чизи дигаре дурӯғ аст. Қавсҳои чоркунҷа ба фармони санҷишӣ баробаранд. Аммо шумо метавонед ягон фармонро ҳамчун далел интиқол диҳед (то даме ки фармон ягон аҳамият баргардонад).

  10.   Бо тавзеҳот ҷавоб диҳед Диго

    Салом, ман чӣ гуна як script.sh-ро бо корбари X дар скрипт иҷро мекунам ва ман корбари Y -ро месозам ва он корбар Y иҷрои script.sh-ро идома медиҳад.

    Оё ин мумкин аст ??

  11.   Куктос Диго

    Хеле ҷолиб, ташаккур!

  12.   Франсиско Диго

    Ташаккур барои саҳм, ман як соат вақтро фаҳмидам xD, аммо ман фаҳмидам !!!!.

  13.   Элой Диго

    Сценария хуб аст. Онро ба тариқи арифметикӣ низ бо тариқи ($? == 0) иҷро кардан мумкин аст, агар он ба сифр баробар бошад, он дар шабака нест, вагарна он дар шабака аст. Ва агар мо ба ҳар ҳол мехоҳем онро каме бештар интерактивӣ кунем, гуфта метавонем:
    echo -n IP ворид кунед:
    ip хонед
    пинг -c 1 $ ip

  14.   Дарио Диго

    Салом, ман бо ин хеле нав ҳастам, кӯшиш мекунам рақами чиптаро (алфавитӣ) тавассути хондан созам ва мехоҳам, ки агар он чизе, ки ворид карда шудааст, формати дуруст (ABC-123456) дошта бошад, фармони "x" -ро иҷро кунад ва ман намехоҳам t медонам, ки чӣ тавр бояд кард, оё ба ман кӯмак карда метавонистӣ?

    акси садо "Ворид кардани чипта"
    хонда чипта

    агар $ chip = "ҳеҷ идея (формати ABC-123456"); пас cp file.txt $ билет; else echo "формати нодуруст, такрор кунед"; хонед -p; fi.

    Боварӣ ҳосил кунед, ки ин даҳшатнок аст ва онҳо механданд ҳаха, аммо тавре ки ман гуфтам, ман аз ин оғоз мекунам.

    Агар ман бад фаҳмонам, лутфан бигӯед ва ман кӯшиш мекунам, ки беҳтар кор кунам.

    Ҳама оғӯш кунед.

  15.   Ҳумберто Ю Диго

    Шарҳи аъло, салом

  16.   чолок Диго

    Ман бо if, else ва дигарон каме шубҳа дорам.
    Ман мехоҳам скрипт мавҷудияти файлро тафтиш кунад (яке аз гузоришҳо) ва агар не, онро эҷод кунад ва баъдтар ба он нависад. Аммо агар он вуҷуд дошта бошад, ман мехоҳам, ки шумо танҳо ба он нависед.

    Он чизе ки ман дорам:

    сана = `санаи -R`
    #Ман санаи тағирёбандаро санҷида будам, ки маро дар байни оғози а навсозӣ намекунад
    #раванд ва ба охир мерасад, баъзан як соат мегузарад ва вақти дуруст намеояд.

    агар [-f /home/user/logs/test.log];
    баъд
    ламс кунед /home/usuario/logs/test.log
    боз
    echo "$ санаи: Навсозӣ" >> /home/user/logs/test.log
    echo «———————————————-» >> /home/user/logs/test.log
    fi

    Дар назария он бояд хуб бошад, аммо воқеият ин аст, ки агар файли истинодшуда аллакай мавҷуд бошад, он нав карда намешавад

    1.    чолок Диго

      бубахшед, дидам, ки фиристода нашудааст ва дучанд шудааст

bool (ҳақиқӣ)