Cara membuat skrip shell sederhana di Linux

Cara membuat skrip shell sederhana di Linux

Membuat skrip shell adalah salah satu kemahiran paling penting yang harus dimiliki oleh pengguna Linux di hujung jari mereka. Skrip shell memainkan peranan yang besar dalam mengautomasikan tugas berulang -ulang yang sebaliknya akan menjadi garis pelaksanaan yang membosankan.

Dalam tutorial ini, kami menyerlahkan beberapa operasi skrip shell asas yang setiap pengguna Linux.

1. Buat skrip shell yang mudah

Skrip shell adalah fail yang terdiri daripada Ascii teks. Kami akan mulakan dengan membuat skrip shell yang mudah, dan untuk melakukan ini, kami akan menggunakan editor teks. Terdapat beberapa editor teks, kedua-dua baris arahan dan berasaskan GUI. Untuk panduan ini, kami akan menggunakan editor vim.

Kami akan bermula dengan membuat skrip mudah yang memaparkan "Hai dunia"Apabila dilaksanakan.

$ vim hello.sh 

Tampal kandungan berikut dalam fail dan simpan.

#!/bin/bash # cetak hello dunia mesej echo "hello world!" 

Mari kita pergi ke garis skrip shell mengikut baris.

  • Baris pertama - #!/bin/bash - dikenali sebagai pengepala shebang. Ini adalah pembinaan khas yang menunjukkan program apa yang akan digunakan untuk mentafsirkan skrip. Dalam kes ini, ini akan menjadi bash Shell ditunjukkan oleh /bin/bash. Terdapat bahasa skrip lain seperti Python yang dilambangkan oleh #!/usr/bin/python3 dan Perl yang mana tajuk shebang dilambangkan oleh #!/usr/bin/perl.
  • Baris kedua adalah komen. Komen adalah pernyataan yang menggambarkan skrip shell dan tidak dilaksanakan apabila skrip dijalankan. Komen selalu didahului oleh tanda hash #.
  • Baris terakhir adalah arahan yang mencetak 'Hai dunia'Mesej di terminal.

Langkah seterusnya ialah membuat skrip boleh dilaksanakan dengan memberikan kebenaran melaksanakan menggunakan chmod arahan seperti yang ditunjukkan.

$ chmod +x hello.sh 

Akhirnya, jalankan skrip shell menggunakan salah satu arahan:

$ bash hello.sh atau $ ./Helo.sh 
Buat skrip shell dunia hello

2. Menggunakan pernyataan bersyarat untuk melaksanakan kod

Seperti bahasa pengaturcaraan lain, Kenyataan bersyarat digunakan dalam skrip bash untuk membuat keputusan, dengan hanya sedikit variasi dalam sintaks. Kami akan menutupi jika, jika tidak, dan Elif Kenyataan bersyarat.

Contoh pernyataan IF SAHAJA

The jika pernyataan boleh digunakan untuk menguji syarat tunggal atau berganda. Kami akan bermula dengan penggunaan asas dari jika pernyataan untuk menguji satu keadaan. The jika pernyataan ditakrifkan oleh jika ... fi blok.

jika perintah kemudian pernyataan fi 

Mari lihat skrip shell di bawah.

#!/bin/bash echo 'masukkan skor' baca x jika [[$ x == 70]]; Kemudian echo 'pekerjaan yang baik!'fi 

Skrip shell di atas mendorong pengguna untuk memberikan skor yang kemudian disimpan dalam pembolehubah x. Sekiranya skor sepadan dengan 70, Skrip mengembalikan output "Syabas!". Pengendali perbandingan == digunakan untuk menguji jika skor dimasukkan, yang disimpan dalam pemboleh ubah x, bersamaan dengan 100.

Sekiranya pernyataan dalam skrip shell

Pengendali perbandingan lain yang boleh anda gunakan termasuk:

  • -Pers - Sama dengan
  • -ne - Tidak sama dengan
  • -Lt - Kurang daripada
  • -le - Kurang daripada atau sama dengan
  • -Lt - Kurang daripada
  • -ge - Lebih besar daripada atau sama dengan

Contohnya, jika-penyataan blok di bawah cetakan 'Bekerja lebih keras'Sekiranya skor input adalah nilai kurang daripada 50.

jika [[$ x -lt 50]]; Kemudian echo 'bekerja lebih keras!'fi 
Sekiranya pernyataan dalam skrip shell

Contoh pernyataan if-else

Untuk situasi di mana anda mempunyai 2 hasil yang mungkin: - sama ada ini atau itu - pernyataan if -else berguna.

jika perintah kemudian penyata1 pernyataan lain2 fi 

Skrip di bawah membaca skor input dan memeriksa sama ada ia lebih besar daripada atau sama dengan 70.

Sekiranya skor lebih besar daripada atau sama dengan 70, anda mendapat 'Kerja bagus, anda lulus!'Mesej. Walau bagaimanapun, jika skor jatuh di bawah 70, output 'Anda gagal'akan dicetak.

#!/bin/bash echo 'masukkan skor' baca x jika [[$ x -ge 70]]; Kemudian echo 'pekerjaan yang hebat, anda lulus!'lain echo' anda gagal 'fi 
pernyataan jika-else dalam skrip shell

Contoh pernyataan if-elif-else

Dalam senario di mana terdapat banyak keadaan dan hasil yang berbeza, jika-elif-else pernyataan digunakan. Kenyataan ini mengambil format berikut.

jika syarat1 kemudian penyata1 elif syarat2 maka pernyataan2 pernyataan lain3 fi 

Sebagai contoh, kami mempunyai skrip untuk loteri yang memeriksa jika nombor yang dimasukkan adalah sama ada 90, 60 atau 30.

#!/bin/bash echo 'masukkan skor' baca x jika [[$ x -eq 90]]; Kemudian echo "anda telah memenangi hadiah pertama" elif [[$ x -eq 60]]; Kemudian echo "anda telah memenangi hadiah kedua" elif [[$ x -eq 30]]; Kemudian echo "anda telah memenangi hadiah kedua" lain echo "sila cuba lagi" fi 
Pernyataan jika-elif-else

3. Menggunakan pernyataan IF dengan dan logik

Anda boleh menggunakan jika pernyataan bersama Dan pengendali logik untuk melaksanakan tugas jika dua syarat berpuas hati. The && pengendali digunakan untuk menunjukkan Dan logik.

#!/bin/bash echo 'Sila masukkan user_id anda' baca user_id echo 'Sila masukkan tag_no' baca tag_id jika [[($ user_id == "tecmint" && $ tag_id -eq 3990)]]]] Kemudian echo "login berjaya" lain echo "kegagalan log masuk" fi 

5. Menggunakan pernyataan IF dengan atau logik

Apabila menggunakan Atau logik, yang diwakili oleh || simbol, sama ada salah satu syarat perlu berpuas hati dengan skrip untuk memberikan hasil yang diharapkan.

#!/bin/bash echo 'Sila masukkan nombor baca nombor rawak' jika [[(nombor -eq 55 || nombor -eq 80)]]]; Kemudian echo 'tahniah! Anda telah memenangi 'lain echo' maaf, cuba lagi 'fi 
Sekiranya pernyataan dengan atau logik

Gunakan pembinaan gelung

Bash gelung Benarkan pengguna melakukan siri tugas sehingga hasil tertentu dicapai. Ini berguna dalam melaksanakan tugas berulang. Dalam seksyen ini, kita akan mengintip beberapa gelung yang anda juga dapati dalam bahasa pengaturcaraan lain.

Semasa gelung

Ini adalah salah satu gelung yang paling mudah untuk bekerjasama. Sintaks agak mudah:

sementara arahan dilakukan 

Gelung sementara di bawah menyenaraikan semua nombor dari 1 hingga 10 ketika dilaksanakan.

#!/bin/bash # A mudah semasa gelung kaunter = 1 sementara [$ counter -le 10] lakukan echo $ counter ((counter ++)) selesai 

Mari kita melengkapkan gelung sementara:

Pembolehubah kaunter dimulakan ke 1. Dan sementara pemboleh ubah kurang dari atau sama dengan 10, Nilai kaunter akan bertambah sehingga keadaan berpuas hati. Garisan itu echo $ counter Mencetak semua nombor dari 1 hingga 10.

Semasa gelung dalam skrip shell

Untuk gelung

Seperti sementara gelung, a untuk gelung digunakan untuk melaksanakan kod secara beransur -ansur. I.e. Ulangi pelaksanaan kod seberapa banyak yang mungkin ditakrifkan oleh pengguna.

Sintaks adalah:

untuk var dalam 1 2 3 4 5 n command1 command2 selesai 

The untuk gelung di bawah berulang melalui 1 hingga 10 dan memproses nilai mereka pada skrin.

Untuk gelung dalam skrip shell

Cara yang lebih baik untuk mencapai matlamat ini adalah dengan menentukan julat menggunakan pendakap keriting berganda seperti yang ditunjukkan dan bukannya menaip semua nombor.

#!/bin/bash # nyatakan julat dalam gelung untuk num dalam 1 ... 10 lakukan echo $ num selesai 

Parameter Posisi Bash

Parameter kedudukan adalah pemboleh ubah khas yang dirujuk dalam skrip apabila nilai diluluskan pada shell tetapi tidak dapat diberikan. Parameter kedudukan berjalan dari $ 0 $ 1 $ 2 $ 3... ke $ 9. Di luar $ 9 nilai, parameter mesti disertakan dalam kurungan keriting e.g $ 10, $ 11 .. dan sebagainya.

Semasa melaksanakan skrip, parameter kedudukan pertama yang mana $ 0 mengambil nama skrip shell. The $ 1 Parameter mengambil pemboleh ubah pertama yang diluluskan di terminal, $ 2 mengambil yang kedua, $ 3 yang ketiga dan sebagainya.

Mari buat ujian skrip.sh seperti yang ditunjukkan.

#!/bin/bash echo "Nama skrip adalah:" $ 0 echo "Nama pertama saya ialah:" $ 1 echo "Nama kedua saya ialah:" $ 2 

Seterusnya, laksanakan skrip dan berikan nama pertama dan kedua sebagai hujah:

# ujian bash.SH James Kiarie 
Parameter Posisi Bash

Dari output, kita dapat melihat bahawa pemboleh ubah pertama yang dicetak adalah nama skrip shell, dalam hal ini, ujian.sh. Selepas itu, nama -nama dicetak sepadan dengan parameter kedudukan yang ditakrifkan dalam skrip shell.

Parameter posisional berguna kerana mereka membantu anda menyesuaikan data yang dimasukkan dan bukannya secara eksplisit memberikan nilai kepada pembolehubah.

Kod Keluar Perintah Shell

Mari kita mulakan dengan menjawab soalan mudah, apakah itu Kod Keluar?

Setiap arahan yang dilaksanakan di atas shell oleh pengguna atau skrip shell mempunyai status keluar. Status keluar adalah integer.

Status keluar dari 0 menyiratkan bahawa perintah itu berjaya dilaksanakan tanpa sebarang kesilapan. Apa sahaja antara 1 hingga 255 menunjukkan bahawa arahan gagal atau tidak berjaya dilaksanakan.

Untuk mencari status keluar arahan, gunakan $? Pembolehubah shell.

Status keluar 1 mata kepada ralat umum atau sebarang kesilapan yang tidak dibenarkan seperti mengedit fail tanpa kebenaran sudo.

Status keluar 2 mata untuk penggunaan yang salah dari pemboleh ubah shell perintah atau terbina.

Status keluar 127 menunjukkan kepada komando haram yang biasanya menghasilkan 'arahan tidak dijumpai'Ralat.

Cari Status Perintah Keluar

Memproses output arahan shell dalam skrip

Dalam skrip bash, anda boleh menyimpan output arahan dalam pembolehubah untuk kegunaan masa depan. Ini juga disebut sebagai pengganti arahan shell dan boleh dicapai dengan cara berikut.

Variable = $ (Command) atau Variable = $ (/Path/to/Command) atau Variable = $ (Argumen Perintah 1 Argumen 2 ...) 

Contohnya, anda boleh menyimpan Tarikh perintah dalam pemboleh ubah yang dipanggil Hari ini dan hubungi skrip shell untuk mendedahkan tarikh semasa.

#!/bin/bash hari ini = $ (tarikh) echo "Hari ini $ hari ini" 
Tarikh Cetak Menggunakan Skrip Shell

Mari ambil contoh lagi. Katakan anda ingin mencari pengguna log masuk yang sah di sistem linux anda. Bagaimana anda akan melakukannya? Pertama, senarai semua pengguna (kedua -dua sistem, proses, dan pengguna log masuk) disimpan di /etc/passwd fail.

Untuk melihat fail, anda perlu menggunakan perintah kucing. Walau bagaimanapun, untuk menyempitkan untuk log masuk pengguna, gunakan arahan grep untuk mencari pengguna dengan /bin/bash atribut dan gunakan potong -c 1-10 perintah seperti yang ditunjukkan untuk memaparkan 10 aksara pertama nama.

Kami telah menyimpan perintah kucing kepada Login_users pembolehubah.

#!/bin/bash login_users = $ (kucing/etc/passwd | grep/bin/bash | cut -c 1-10) echo 'Ini adalah senarai pengguna log masuk: echo $ login_users 
Senarai Log masuk Pengguna

Ini membawa tutorial kami untuk mencipta skrip shell sederhana hingga akhir. Kami harap anda dapati ini berharga.