Баш програмчлах - 3-р хэсэг

Пара аюулгүй бидний үзэл баримтлал Бид Bash програм дээр төгс ажилладаг програмчлалын маш хэрэгтэй 2 хэрэгслийг сурах болно. Бүтээж сур функцууд ба тодорхойлох дамжуулах хоолой эхэндээ төвөгтэй санагдаж болох ч дараа нь бид асар их зүйлийг харах болно хэрэгсэл Тэд бидэнд өгдөг.

Хоолой

Тодруулбал, хэт их эргэлтгүйгээр дамжуулах хоолой гэдэг нь нэг процессын гаралтыг нөгөө процессын оролт болгон чиглүүлэх боломжийг олгодог бөгөөд кодын шугамыг багасгах, үр дүнг хадгалах хувьсагчаар хуваарилах, сайжруулах зэрэг цуврал давуу талыг олгодог. скриптийн үр ашиг.

Хоолойг ерөнхийдөө | тэмдэгтэйгээр хүлээн зөвшөөрдөг илэрхийлэлийг нэгтгэх боломжийг олгодог; Хэдийгээр энэ нь анхдагчаар ашиглагддаг боловч хоолой үүсгэх өөр аргууд байдаг.

Жишээ: саяхны цөмийн мессежүүдийг хэвлэх

#dmesg нь саяхан цөмийн мессеж, ачаалагдсан драйверуудыг үзэх боломжийг олгодог. сүүл нь файлын сүүлчийн хэсгүүдийг эсвэл # тушаалыг хэвлэнэ

dmesg | сүүл

Хэдийгээр тэдгээр нь бидний хүссэн хэмжээгээр төвөгтэй байж болох ч дамжуулах хоолойн үндсэн бүтэц нь нэг тушаалын үр дүнг дараагийн тушаалд оролтын хэлбэрээр ашиглах боломжийг олгодог бөгөөд хэрэв бид дараалсан хоолойнуудыг нэмж хийвэл шинэ тушаалын оролтыг өгөх болно.

Чиг үүрэг

Функцууд нь тэдгээрийг дахин бичихгүйгээр хэд хэдэн удаа гүйцэтгэж болохуйцаар нэгтгэгдсэн өгүүлбэрүүдийн цогц юм. Бид нэг төрлийн хоол хийж сурахдаа түүний жорыг хуудсан дээр бичнэ гэж бодож байгаа бөгөөд тэр хоолыг хийхийг хүссэн үедээ ижил жороор шинэ хуудас бичихийн оронд жороор нь зөвлөдөг.

Функцүүдийн хамгийн чухал зүйл бол тэдгээрийг боловсруулах, гаралт үүсгэхэд ашиглах параметрүүд, өгөгдлийг дамжуулах боломж юм. Түүний бүтэц нь дараах байдалтай байна.

функцын нэр-нэр {

үйл явц

}

Жишээ: tcp протокол дээр ажилладаг үйлчилгээг харуулдаг функц. Илүү олон хоолой хэрхэн яаж түрхэхийг бид бас харж болно.

# Бид функцийн нэрийг тодорхойлдог бөгөөд энэ нь бидний дуртай нэр байж болно.

функцын үйлчилгээ_tcp {

#cat нь бүх үйлчилгээнүүдийг холбогдох порттой нь агуулсан # байгаа / etc / services хавтасны агуулгыг нэгтгэж харуулна.

# эхний grep нь жагсаалтыг аваад сэтгэгдлүүдийг устгаж, бид үр дүнг эргүүлнэ

# хоёр дахь grep нь зөвхөн tcp-тэй холбоотой зүйлийг харуулдаг

муур / гэх мэт / үйлчилгээ | grep –v "^ #" | grep tcp

}

Энэ функцийг гүйцэтгэх шаардлагатай бол түүнийг нэрээр нь дуудах хэрэгтэй.

tcp_үйлчилгээ

Энэ тохиолдолд параметргүйгээр ажилладаг; Хэрэв тэдгээр нь байгаа бол функцийг зөв ажиллуулахын тулд бид тэдгээрийг нэмэх ёстой, эс тэгвээс функц зөв ажиллахгүй болно. Return-ийг ашигласнаар функц нь процессын үр дүнд утга буцаах боломжийг олгодог.

Жишээ: 2 тооны нийлбэрийг тооцоолох оролтын параметр бүхий функц.

#! / bin / bash
функцын нийлбэр ()
{
# with бид ишлэл доторх ажиллагааг гүйцэтгэх боломжтой
"үр дүн = $ 1 + $ 2" -г зөвшөөрөх

#return нь бүхэл тоон утгыг буцаах боломжийг олгодог. Буцаалтыг гүйцэтгэсний дараа утгыг $ хувьсагч дотор хадгална уу?
$ үр дүнг буцаах;
}
 
# Sum функцийг дуудаж оролтын 2 параметрийг дамжуулна.

нэмэх 2 3

$ -ийн утгыг # хэвлэнэ үү? хувьсагчийн бодит утгыг ишлэлээр үнэлэх цуурайгаар
echo -e "Үр дүн = $?";

Хуан Карлос Ортизд баярлалаа!


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

7 сэтгэгдэл, үлдээгээрэй

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно.

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.

  1.   Nill заагч гэж хэлэв

    Би итгэлгүй байна, гэхдээ функцуудын буцах мэдэгдэл нь зөвхөн "гарах" гэсэн алдааны кодууд шиг 0-ээс 255 хүртэлх бүхэл тоог буцааж өгдөг, хэрэв бүх зүйл хэвийн байвал бусад тохиолдолд бусад тоо байх болно. Хэдийгээр энэ нь жишээнд үр дүнгээ өгсөн боловч үр дүнг буцааж өгөх нь сайн туршлага биш гэж бодож байна.
    Тэнд би дэмий хоосон үг хэлж байна шүү дээ! нүд! ха!

  2.   Жуанк гэж хэлэв

    Үнэн надад эргэлзээ төрүүлэв. Аль ч тохиолдолд функцтэй холбоотой асуудлуудаас зайлсхийхийн тулд функц нь утга эсвэл мөрийг буцааж эсвэл хэвлэхийг хүсч байгаа тохиолдолд өгөгдлийг цуурайгаар сольж болно.

  3.   Абел С. Том уул гэж хэлэв

    Үүнийг шийдэхийн тулд bc командыг ашиглаж, нийлбэр функцэд дараахь зүйлийг ашиглаж болно: result = `echo $ 1 + $ 2 | BC -ql

  4.   Луис Мигуэл гэж хэлэв

    Сайн,

    Системийг өргөн ажиллуулахын тулд bash файлуудыг хаана хадгалж болох вэ, энэ нь хогийн савны директор биш, харин нөөцлөх боломжтой байж болохыг би мэдмээр байна.

    Талархан хүндэтгэсэн.

  5.   Joaquin гэж хэлэв

    Маш их баярлалаа, би скриптүүдээс эхэлж байгаа бөгөөд үнэн нь энэ нь маш их ашигтай тул та мэдлэгээ хуваалцахдаа маш эелдэг байна!
    Баярлалаа!

    1.    одоо линукс ашиглая гэж хэлэв

      Баярлалаа! Тэврэх!
      Пабло

  6.   Кристиян гэж хэлэв

    Синтаксийн алдаа: "(" гэнэтийн
    Жишээг ажиллуулахад алдаа гарлаа, би яг адилхан хуулсан

    Юу байж болох вэ? Би ubuntu 14.10 дээр байна

bool (үнэн)