GNU/Linux >> Belajar Linux >  >> Linux

Skrip bash(I)

Ini adalah artikel pertama dari seri yang berfokus pada skrip Gnu Bash. Ini bukan kursus lengkap tentang pemrograman bash, tetapi pada akhirnya Anda harus mempelajari satu atau dua hal. Maksud saya, hal-hal berguna yang akan membantu membuat hidup Anda lebih mudah.

Kemalasan adalah kunci sukses

Terkadang saya perlu menjalankan command1, diikuti oleh command2, lalu command3 dan akhirnya command4. Setelah beberapa saat saya perlu mengulangi urutan perintah itu. Tetapi karena saya sangat pintar, saya menelusuri riwayat perintah dengan tombol panah ke atas sehingga saya tidak perlu menulis lagi.

Kemudian, setelah beberapa saat, saya harus melakukannya lagi, dan saya tahu bahwa saya harus melakukannya lagi beberapa kali di masa depan. Misalnya, setiap hari, Anda mem-boot komputer Anda, masuk ke linux berbasis debian Anda dan memeriksa pembaruan paket:

# apt-get update
(...)
# apt-get upgrade
(...)
# apt-get dist-upgrade

Alih-alih mengetik 52 karakter itu setiap saat, Anda bisa meletakkannya di skrip seperti ini:

#!/bin/bash
#this is not a Hello world
apt-get update
apt-get upgrade
apt-get dist-upgrade

Anda dapat menyimpan skrip ini sebagai 'up.sh' dan keesokan paginya setelah Anda login jalankan saja:./up.sh . Sama seperti itu Anda telah menghemat 44 penekanan tombol, apakah Anda malas atau apa?.

Tidak, kami tidak melakukannya, jika Anda mencoba menjalankan 'apa adanya', Anda akan mendapatkan Galat izin ditolak yang indah . Itu karena saya tidak pernah menyuruh untuk mengatur izin eksekusi:

# chmod +x up.sh

Nanti saya akan tunjukkan caranya agar lebih malas lagi.

Selain perintah pada baris terakhir, Anda telah memperhatikan karakter angka (#) pada dua baris pertama. Baris pertama disebut shebang dan memberi tahu sistem yang digunakan juru bahasa untuk menjalankan perintah pada skrip.

Yang kedua hanyalah sebuah komentar dan Anda dapat meletakkannya di mana-mana:apa yang ada di balik tanda itu akan diabaikan. Misalnya:

# this is a comment
command1 # this also is a comment. Should explain what that command do
#command2. # This was command... but as was commented out, bash would ignore it

Penting (setidaknya bagi saya) untuk menambahkan setidaknya beberapa komentar untuk mengingat Anda apa yang dilakukan skrip dan mengapa. Juga, dalam skrip besar, untuk menambahkan komentar untuk menjelaskan blok, atau bagian, atau bagian skrip. Komentar akan membantu Anda ketika Anda kembali ke skrip Anda beberapa bulan, atau minggu, atau bahkan beberapa hari kemudian.

Semakin malas

Tidak perlu mengetik setiap kali kita masuk ke sistem kita. Kita dapat membuat komputer menjalankan skrip itu untuk kita. Anda dapat menambahkan baris “./up.sh ” di salah satu tempat berikut:

  • .bashrc . Ini akan menjalankan skrip setiap kali Anda meluncurkan shell non-login (yaitu terminal yang disertakan di desktop Anda, seperti xterm)
  • .bash_profile Ini untuk shell login, misalnya ketika Anda mengetikkan pengguna dan kata sandi Anda di konsol atau masuk ke sistem Anda melalui ssh.
  • .xinitrc seperti .bashrc tetapi untuk sesi grafis. Anda mungkin menggunakan destkop modern dengan alatnya sendiri untuk memulai aplikasi secara otomatis, menggunakannya.
  • entri dalam file crontab Anda, sehingga berjalan secara berkala.

Variabel

Kami membutuhkan 'sesuatu' untuk menyimpan nilai, misalnya input pengguna, parameter dari baris perintah. 'Sesuatu' ini adalah variabel. Omong-omong, saya berasumsi bahwa Anda sudah tahu apa itu variabel.

Untuk mendeklarasikan variabel, Anda dapat

  • menetapkan nilai ke nama variabel. Contoh:x=1
  • masukkan nilai kepada pengguna dengan perintah read:read x
  • parameter dari baris perintah. Saya akan segera kembali ke ini
  • adalah cara lain untuk mendefinisikan variabel yang akan kita lihat nanti

Untuk 'memanggil' variabel ketik tanda dolar diikuti dengan nama variabel. Misalnya jika kita ingin mencetak di layar nilai untuk variabel $x:

echo "x value: $x"
echo "Type y vaue:"
read y
echo "You typed: $y"

Parameter baris perintah disimpan dalam variabel bernomor. Misalnya, gunakan argumen pertama, panggil variabel $1. Untuk yang ke-2, hubungi $2. Dan seterusnya. Variabel $0 menyimpan nama file skrip. Dalam contoh not-a-hello-world pertama saya, nilai untuk $0 adalah “up.sh”.

Array

Array didefinisikan dengan cara yang sama, tetapi dengan nilai yang diapit di antara tanda kurung bulat. Seperti ini:

array=(uno dos tres)

Anda dapat menambahkan lebih banyak nilai nanti ke array dengan indeks yang diapit dalam tanda kurung siku:

array[3]=cuatro

Anda dapat 'memanggil' elemen array dengan kurung kurawal untuk nama array, dan kurung siku untuk posisi elemen (dimulai dengan 0):

$ echo ${array[0]}
uno

Jika Anda tidak menggunakan kurung kurawal, bash akan mencetak [posisi elemen] literal, misalnya:

$ echo $array[0]
uno[0]

Anda dapat memanggil semua array dengan @ sebagai indeks seperti ini:

$ echo ${array[@]}
uno dos tres cuatro

Akhirnya Anda bisa mendapatkan jumlah elemen array dengan tanda hash (sama dengan yang saya katakan sebelumnya untuk komentar) seperti ini:

echo ${#array[@]}
4

Ada banyak hal lain yang bisa kita lakukan dengan array, dan tipe array lainnya, seperti array asosiatif. Tapi ini cukup untuk hari ini.

Terus ikuti perkembangannya

Sejauh ini saya tidak menunjukkan sesuatu yang sangat “woaaah “. Bahkan tidak ada satu pun tangkapan layar di artikel ini. Tapi niat saya menjelang akhir -mungkin tiga atau lebih artikel- seri ini adalah untuk memberikan alat untuk melakukan sesuatu yang bermanfaat. Saya tidak tahu apakah Anda akan menjadi guru skrip bash, tetapi Anda dapat mencoba 😉

Pada yang berikutnya saya akan membahas beberapa struktur kontrol, saluran pipa, dan pengalihan. Sementara itu Anda dapat memeriksa halaman manual bash, tetapi setidaknya bagi saya agak membingungkan


Linux
  1. Periksa apakah ada variabel dalam daftar di Bash

  2. meneruskan grep ke dalam variabel di bash

  3. Bagaimana cara menghapus variabel readonly di bash?

  1. Nama Variabel Bash Dinamis (variabel)?

  2. Bagaimana Membandingkan String di Bash Shell Scripting

  3. bash - pencocokan variabel case-insensitive

  1. Pernyataan Bash:Sintaks dan Contoh

  2. Variabel Ekspor Bash

  3. Alias ​​​​dengan variabel di bash