Programming dina bash - bagian 1

Sedengkeun urang umumna nganggo éta pikeun operasi administrasi atanapi manajemén file, anu konsol de Linux ngalegaan fungsina jauh ngalangkungan tujuan éta, ngamungkinkeun urang pikeun program naskah Pitunjuk ieu sanés dimaksudkeun pikeun janten rujukan lengkep dina pamrograman Bash, tapi langkung gampang pikeun ngenalkeun paréntah sareng struktur dasar, anu bakal ngamungkinkeun urang pikeun mekarkeun kakuatan sistem GNU / Linux kami.

Naon ari "Naskah" na?

Pokokna kami nyarios yén éta mangrupikeun file anu ngandung kode anu ditulis dina basa pamrograman anu tangtu anu dianggo sistem pikeun tugas anu tangtu. Éta henteu kedah ngagaduhan input éksternal atanapi antarbeungeut grafis, tapi éta kedah nyababkeun kaluaran data anu diprosés (sanaos pangguna henteu ningalieun).

Bahasa anu dianggo ku Bash dihartikeun ku panarjamahanna nyalira sareng ngagabungkeun sintaksis tina Cangkang sanésna, sapertos Korn Shell (ksh) atanapi C Shell (csh). Seueur paréntah anu biasana dianggo dina konsol ogé tiasa dianggo dina skrip, kecuali paréntah anu leres-leres aya hubunganana sareng distribusi anu tangtu.

Struktur Naskah

Pikeun ngamimitian urang kedah ngagaduhan éditor téks sareng hoyong program. File anu urang simpen nganggo extension .sh tiasa dieksekusi (atanapi diinterpretasi) ku konsol, salami garis anu kahiji sapertos kieu:

#! / bin / bash

Ieu ngawartoskeun sistem pikeun nganggo konsol pikeun ngajalankeun file. Salaku tambahan, karakter # ngamungkinkeun anjeun nyerat koméntar. Pikeun nyiptakeun conto anu paling saderhana kami nambihan hiji deui garis, ditingali dina gambar ieu:

Paréntah kamandang nembongkeun pesen dina layar, dina hal ieu tipikal "Halo dunya!" Upami urang nyimpen sareng ngaéksekusi kalayan konsol urang bakal ningali hasilna.

Paréntah Dasar

Paréntah ieu umum sareng umum mangpaat pikeun sagala jinis program. Kami netelakeun yén aya seueur deui, tapi kanggo ayeuna urang bakal nutupan hal-hal ieu.

Alias: ngamungkinkeun rentetan kecap diganti ku anu langkung pondok, ngamungkinkeun réduksi kode.

#ciptakeun landihan anu disebat per sareng alamat folder #Downloads alias per = '/ home / user / Downloads' # Unggal urang hoyong nganggo éta kami ngan ukur kedah nyauran # kecap énggal per

putus: ngamungkinkeun anjeun langsung kaluar a, bari, dugi atanapi pilih loop (urang bakal diajar loop sacara rinci engké)

#Ciptakeun loop anu bakal masihan nomer tina 1 dugi ka 5 # kanggo unggal "puteran gelung" kanggo loket dina 1 2 3 4 5 do # Urang nyitak nilai ayeuna tina variabel #counter, anu dianalisis ku karakter $ echo " $ counter ”# Upami nilai counter sami sareng 3 upami [$ counter –eq 3] maka #The break exit loop for break fi done

teraskeun - Sarua sareng putus, kecuali éta teu maliré kana loop anu ayeuna sareng angkat ka anu salajengna.

#Ciptakeun loop anu bakal masihan nomer tina 1 dugi ka 5 # kanggo unggal "puteran gelung" kanggo loket dina 1 2 3 4 5 do # Upami nilai counter sami sareng 3 upami [$ counter –eq 3] maka #Continue nyegah sésana siklus ayeuna tina dianalisis ku luncat ka babak salajengna, nyaéta #value 3 moal dicitak. teraskeun fi echo "$ counter" parantos réngsé

nyatakeun: nyatakeun variabel sareng masihan nilai ka aranjeunna, sapertos jinis (sami-sami tiasa dianggo). Urang tiasa ngagabungkeun deui sareng sababaraha pilihan: -XNUMX nyatakeun bilangan bulat; -r pikeun variabel baca-hijina, anu nilaina teu tiasa dirobih; –A pikeun susunan atanapi “arrays”; -f pikeun fungsi; -x pikeun variabel anu tiasa "diékspor" diluar lingkungan naskahna nyalira.

nyatakeun –i num = 12 nyatakeun –x pi = 3.14

nulungan: nembongkeun pitulung pikeun paréntah khusus.

padamelan: nunjukkeun prosés ngaji.

# Kalayan –c kami nunjukkeun nami paréntah, kalayan –p # pid (prosés id) unggal prosés. padamelan -cp

ngantep: meunteun babasan aritmatika

hayu a = 11 hayu a = a + 5 #Ahirna urang nyitak nilai a anu 16 ékol "11 + 5 = $ a"

lokal: nyiptakeun variabel lokal, anu kedah dianggo langkung saé dina fungsi skrip nyalira pikeun nyegah kasalahan. Anjeun tiasa nganggo fungsi anu sami sareng paréntah nyatakeun.

local v1 = "Ieu mangrupikeun variabel lokal"

kaluar: ngamungkinkeun kaluar tina cangkang lengkep; gunana pikeun kasus dimana urang damel sareng langkung ti hiji jandela Shell, anu paréntah kaluar ngan ukur ngamungkinkeun hiji jandela ditumpurkeun dina hiji waktos.

printf: ngamungkinkeun anjeun nyetak data sareng pormat. Éta ngagaduhan seueur pilihan, janten kami bakal nyebatkeun sababaraha.

#% f nyetak salaku angka anu ngambang, pikeun # baris anyar printf "% fn" 5 5.000000 # & d ngamungkinkeun ngalirkeun angka desimal salaku argumén printf "Aya% d pesenan anu hargana di% d dolar. n" 20 500 Aya 20 pesenan hargana 500 Dolar.

maca: maca garis tina input standar (modul anu dianggo dina ngamuat data ngalangkungan keyboard contona). Urang tiasa ngalirkeun pilihan sapertos: -t kanggo masihan waktos wates bacaan; -supaya unggal kecap ditugaskeun ka posisi dina rarangkén ngaran; -d ngagunakeun pembatas anu bakal ditulis dina tungtung garis; antara séjén.

gema "Lebetkeun nami anjeun teras pencét ENTER" #Baca nami variabel baca nami gema "Nami anjeun $ name"

jenis: ngajelaskeun paréntah sareng kalakuanana. Éta tiasa manpaat pikeun milari definisi data pikeun unggal paréntah.

tipe –a '[' #type nyarioskeun ka kami yén [mangrupikeun paréntah builtin Shell [nyaéta Shell builtin # -a ngamungkinkeun pikeun milarian diréktori anu ngandung # an tiasa dieksekusi kalayan nami tulisan. [nyaéta / usr / bin / [

ulimit: ngawatesan aksés sareng panggunaan sumber daya sistem anu tangtu pikeun prosés, idéal pikeun program anu ngamungkinkeun parobihan administrasi atanapi anu ditujukeun pikeun sababaraha jenis pangguna. Nalika netepkeun wates urang nyerat angka anu ngagambarkeun kilobytes tina wates éta.

#Kami ningali watesan urang ayeuna ulimit –a # -f ngamungkinkeun anjeun pikeun ngabatesan pangguna pikeun henteu tiasa # ngadamel file langkung ageung tibatan 512000 Kb (500 #Mb) ulimit –f 512000 # -v ngabatesan mémori virtual tina prosés na. ulimit –v 512000

antosan: ngantosan prosés atanapi padamelan anu tangtu bakal dilaksanakeun teraskeun.

# Skrip ngantosan prosés pid # 2585 dilaksanakeun

ngantosan 2585

Paréntah mangpaat sanés anu tiasa urang tambahkeun kana skrip diwakilan ku simbol.

!!: ngajalankeun paréntah terakhir deui

! wer: ngajalankeun paréntah terakhir anu dimimitian ku ungkapan "wer".

'==', '! =', '>', '<', '> =', sareng '<=': operator hubungan.

|: Operator ATAWA umumna ngagabung kana dua ungkapan biasa.

: paréntah kabur anu ngamungkinkeun anjeun pormat éksprési. Salaku conto: a pikeun tanda sora, n pikeun garis anyar, b pikeun latar tukang, jsb.

Hatur nuhun Juan Carlos Ortiz!

Eusi tulisan taat kana prinsip urang tina étika éditorial. Pikeun ngalaporkeun kasalahan klik di dieu.

10 koméntar, tinggalkeun anjeun

Ninggalkeun koméntar anjeun

email alamat anjeun moal diterbitkeun. Widang diperlukeun téh ditandaan ku *

*

*

  1. Jawab data: Miguel Ángel Gatón
  2. Tujuan tina data: Kontrol SPAM, manajemén koméntar.
  3. Legitimasi: idin anjeun
  4. Komunikasi data: Data moal dikomunikasikan ka pihak katilu kacuali ku kawajiban hukum.
  5. Panyimpenan data: Basis data anu diayakeun ku Occentus Networks (EU)
  6. Hak: Iraha waé anjeun tiasa ngawatesan, cageur sareng mupus inpormasi anjeun.

  1.   Sedeng Sulit cenahna

    Hébat! Pokokna 2 koméntar: Tag Ubuntu satengah teuing, sabab ngageneralisasikan hal anu umum. Sareng upami tutorial ieu teras-terasan maju, langkung saé upami éta saling pakait….
    Lian ti éta, mindahkeun ieu pikaresepeun!

  2.   Hayu urang nganggo Linux cenahna

    Kontribusi anu saé! Hébat!

  3.   Giovanni escobar sosa cenahna

    Ngan ukur aya referensi anu teu kapendak pikeun anu hoyong langkung ngémutan. Sababaraha anu saé sanaos henteu gampang dipendakan di nagara urang
    - Pitunjuk praktis pikeun Paréntah Linux, Editor, sareng Programming Shell, Mark Sobell (Bab 8)
    - Pro Bash Programming, Chris FA Johnson (sanaos ieu kanggo anu ngagaduhan référénsi sanés atanapi sakedik pangetahuan).

    Tulisan anu saé.

  4.   Hayu urang nganggo Linux cenahna

    Tanggal anu saé! Hatur nuhun!

  5.   Patricio Dorantes Jamarne cenahna

    : @ Fungsi "lebet salaku" ngahapus koméntar kuring sateuacana, janten kuring bakal nyimpulkeun deui:
    padamelan -cp
    bash: padamelan: -c: pilihan henteu valid
    padamelan: pamakean: padamelan [-lnprs] [jobspec…] atanapi padamelan -x paréntah [args]

    -eq -gt -lt henteu nampi variabel titik decimal, antara forum sareng forum kuring mendakan yén bc mangrupikeun sekutu anu saé:
    upami [`gema 9.999> 10 | bc` -eq 1]; satuluyna
    gema "9.999 langkung ageung tibatan 10, pastikeun prosésor anjeun masih tiasa dianggo"
    lamun henteu
    kamandang «9.999 henteu langkung ageung tibatan 10, sadayana jalan normal
    fi

  6.   TeuTiBrooklyn cenahna

    Tulisan ieu nyimpulkeun pisan sadayana umumna tina bash scripting:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Dina situs ieu anjeun bakal mendakan seueur patarosan sareng jawaban ngeunaan bash peculiarities:
    http://unix.stackexchange.com/questions/tagged/bash

    Ieu sababaraha naskah anu saé pisan, sareng hé, anjeun tiasa diajar ku maca naskah batur:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   TeuTiBrooklyn cenahna

    Anjeun leres kalayan naon anu anjeun carioskeun, kecuali pikeun bash. Unggal sistem anu kuring tingali gaduh bash in / bin / bash.

    Tapi pikeun python, perl, ruby, jsb, henteu kunanaon ngagunakeun éta. Abdi

  8.   Guille cenahna

    Kaleresan, di paguron luhur kami nganggo bash scripting janten data na 10, saé pisan!

  9.   alek vi cenahna

    versi pdf pikeun diunduh bakal saé !! 😀

  10.   Marco Antonio De Fuentes cenahna

    Situs anu saé pisan. Kuring tungtungna mendakan hal anu mangpaat. Hatur nuhun.