Pengaturcaraan dalam bash - bahagian 3

kepada selamat kami konsep Kami akan mempelajari 2 alat yang sangat berguna untuk pengaturcaraan yang berfungsi dengan sempurna di Bash. Belajar membuat fungsi dan mentakrifkan saluran paip mungkin kelihatan kompleks pada mulanya, tetapi kemudian kita akan melihat yang besar utiliti bahawa mereka memberi kita.

Paip

Secara khusus, dan tanpa terlalu banyak giliran, saluran pipa adalah kaedah yang memungkinkan mengarahkan output dari satu proses sebagai input dari proses yang lain, yang memungkinkan serangkaian kelebihan, seperti mengurangi garis kod, membuang variabel penyimpanan untuk hasil dan meningkatkan kecekapan skrip.

Paip umumnya dikenali dengan simbol | yang memungkinkan untuk menggabungkan ungkapan; Walaupun digunakan secara lalai, ada cara lain untuk membuat paip.

Contoh: mencetak mesej kernel baru-baru ini

#dmesg membolehkan anda melihat mesej kernel baru-baru ini dan pemacu yang dimuatkan # semasa sistem boot; tail mencetak bahagian terakhir fail atau #command

dmesg | ekor

Walaupun mereka dapat menjadi rumit sebanyak yang kita mahukan, struktur dasar saluran paip memungkinkan hasil dari satu perintah digunakan sebagai input ke perintah berikutnya, yang dapat memberikan input untuk perintah baru jika kita terus menambahkan pipa berturut-turut.

fungsi

Fungsi adalah sekumpulan pernyataan yang dikelompokkan bersama sehingga dapat dilaksanakan beberapa kali tanpa harus menulis ulang. Ini sama dengan berfikir bahawa apabila kita belajar memasak sejenis makanan, kita akan menulis resepnya di atas selembar, dan setiap kali kita mahu memasak makanan itu, kita merujuk kepada resipi dan bukannya menulis semula helaian baru dengan resipi yang sama.

Mungkin perkara yang paling penting mengenai fungsi adalah kemungkinan melewati parameter, data yang akan mereka gunakan untuk memprosesnya dan menghasilkan output. Strukturnya adalah seperti berikut:

fungsi fungsi-nama {

proses

}

Contoh: fungsi yang menunjukkan perkhidmatan yang berfungsi pada protokol tcp. Kita juga dapat melihat cara memasang lebih banyak paip.

# Kami menentukan nama fungsi, ia boleh menjadi nama yang kita suka.

perkhidmatan fungsi_tcp {

#cat menggabungkan dan memaparkan kandungan folder / etc / services, iaitu # yang mengandungi semua perkhidmatan dengan port yang berkaitan.

# grep pertama mengambil senarai dan membuang komen, dengan –v kami membalikkan hasilnya

# grep kedua menunjukkan hanya yang berkaitan dengan tcp

kucing / lain-lain / perkhidmatan | grep –v "^ #" | grep tcp

}

Apabila kita perlu menjalankan fungsi ini, kita hanya perlu memanggilnya dengan namanya:

perkhidmatan tcp_

Dalam kes ini, ia berfungsi tanpa parameter; Sekiranya memilikinya, kita mesti menambahkannya agar fungsinya berfungsi dengan baik, jika tidak, fungsinya tidak akan berfungsi dengan baik. Menggunakan kembali membolehkan fungsi mengembalikan nilai sebagai hasil dari proses tersebut.

Contoh: berfungsi dengan parameter input yang mengira jumlah 2 nombor.

#! / Bin / Bash
jumlah fungsi ()
{
# dengan membiarkan kita dapat menjalankan operasi di dalam tanda kutip
biarkan "hasil = $ 1 + $ 2"

#return memungkinkan untuk mengembalikan nilai integer. Setelah pengembalian dilaksanakan, nilainya akan dimasukkan ke dalam pemboleh ubah $?
pulangkan hasil $;
}
 
#Fungsi penjumlahan dipanggil dan kami melewati 2 parameter input.

tambah 2 3

# mencetak nilai $? dengan gema menilai nilai sebenar pemboleh ubah dalam petikan
echo -e "Hasil = $?";

<< Pergi ke bahagian sebelumnya

Terima kasih Juan Carlos Ortiz!


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   Penunjuk Nill kata

    Saya tidak pasti, tetapi pernyataan pengembalian fungsi hanya berfungsi untuk mengembalikan bilangan bulat antara 0 dan 255, seperti kod ralat "keluar", umumnya 0 jika semuanya baik-baik saja dan nombor lain untuk kes lain. Walaupun dalam contoh ini berjaya, saya rasa tidak menjadi amalan yang baik untuk mengembalikan hasilnya dengan pulangan.
    Di sana saya mengatakan omong kosong ya! mata! ha!

  2.   johnk kata

    Kebenaran meninggalkan saya dengan keraguan. Bagaimanapun, untuk mengelakkan masalah dengan fungsi, kita dapat mengganti kembali dengan gema jika fungsi tersebut berusaha mengembalikan atau mencetak nilai atau rentetan.

  3.   Abel S. Gunung Besar kata

    Memang benar, untuk menyelesaikannya anda boleh menggunakan perintah bc, dalam fungsi jumlah yang boleh anda gunakan: hasil = `gema $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel kata

    Baik,

    Saya ingin tahu di mana saya boleh menyimpan fail bash untuk menjalankan sistem secara menyeluruh dan itu bukan direktori tong sampah, tetapi boleh menjadi rumah cadangan.

    Terima kasih dan salam.

  5.   Joaquin kata

    Terima kasih banyak, saya mulakan dengan skrip, dan sebenarnya ini sangat berguna, anda sangat baik untuk berkongsi pengetahuan anda!
    salam

    1.    mari gunakan linux kata

      Terima kasih! Peluk!
      Paul

  6.   CRISTHIAN kata

    Ralat sintaks: "(" tidak dijangka
    Saya mendapat ralat ketika cuba menjalankan contohnya, saya menyalinnya sama persis

    Apa yang boleh? saya berada di ubuntu 14.10