Panduan Pemula Untuk BASH - Parameter Input

Selamat datang di bagian ke-2 Panduan Pemula Untuk seri BASH yang unik karena merupakan satu-satunya tutorial BASH yang ditulis oleh pemula untuk pemula.

Pembaca panduan ini akan membangun pengetahuan mereka saat saya membangun pengetahuan saya dan semoga di akhir semua itu kita akan dapat menulis beberapa skrip yang cukup pintar.

Minggu lalu saya membahas pembuatan skrip pertama Anda yang hanya menampilkan kata "Hello World". Ini mencakup subjek seperti editor teks, cara membuka jendela terminal, tempat meletakkan skrip Anda, cara menampilkan kata "Hello World" dan beberapa poin lebih bagus pada karakter pelarian seperti tanda kutip ("").

Minggu ini saya akan membahas parameter input. Ada panduan lain yang mengajarkan hal semacam ini tetapi saya menemukan mereka melompat ke beberapa hal yang cukup rendah dan mungkin memberikan terlalu banyak informasi.

Apa itu Parameter?

Dalam skrip "Hello World" dari tutorial terakhir, semuanya sangat statis. Skripnya tidak banyak berpengaruh.

Bagaimana kita bisa memperbaiki skrip "Hello World"?

Bagaimana dengan naskah yang menyapa orang yang menjalankannya? Daripada mengatakan "Hello World", itu akan mengatakan "Halo Gary", "Hello Tim" atau "Hello Dolly".

Tanpa kemampuan untuk menerima parameter input, kita perlu menulis tiga skrip "hellogary.sh", "hellotim.sh" dan "hellodolly.sh".

Dengan mengizinkan skrip kami membaca parameter masukan, kami dapat menggunakan satu skrip untuk menyapa siapa pun.

Untuk melakukan ini membuka jendela terminal (CTRL + ALT + T) dan menavigasi ke folder skrip Anda dengan mengetik berikut: ( tentang perintah cd )

skrip cd

Buat skrip baru yang disebut greetme.sh dengan mengetikkan yang berikut: ( tentang perintah sentuh )

sentuh greetme.sh

Buka skrip di editor favorit Anda dengan mengetik yang berikut: ( sekitar perintah nano )

nano greetme.sh

Masukkan teks berikut dalam nano:

#! / bin / bash echo "hello $ @"

Tekan CTRL dan O untuk menyimpan file dan kemudian CTRL dan X untuk menutup file.

Untuk menjalankan skrip, masukkan yang berikut ini ke dalam baris perintah diganti dengan nama Anda.

sh greetme.sh

Jika saya menjalankan skrip dengan nama saya ini akan menampilkan kata-kata "Hello Gary".

Baris pertama memiliki baris #! / Bin / bash yang digunakan untuk mengidentifikasi file sebagai skrip bash.

Baris kedua menggunakan pernyataan gema untuk menggemakan kata hello dan kemudian ada notasi $ @ yang aneh. ( tentang perintah echo )

$ @ Diperluas untuk menampilkan setiap parameter yang dimasukkan bersama dengan nama skrip. Jadi jika Anda mengetik "salamku.sh tim" kata "halo tim" akan ditampilkan. Jika Anda mengetik "greetme.sh tim smith" maka kata "hello tim smith" akan ditampilkan.

Mungkin bagus untuk script greetme.sh untuk hanya menyapa hanya dengan menggunakan nama depan. Tidak ada yang mengatakan "halo gary newell" ketika mereka bertemu saya, mereka mungkin mengatakan "halo gary".

Mari kita ubah skripnya sehingga hanya menggunakan parameter pertama. Buka skrip greetme.sh di nano dengan mengetik yang berikut:

nano greetme.sh

Ubah skrip agar berbunyi sebagai berikut:

#! / bin / bash echo "hello $ 1"

Simpan skrip dengan menekan CTRL dan O lalu keluar dengan menekan CTRL dan X.

Jalankan skrip seperti yang ditunjukkan di bawah ini (ganti nama saya dengan Anda):

sh greetme.sh gary newell

Ketika Anda menjalankan skrip, Anda cukup mengucapkan "hello gary" (atau mudah-mudahan "halo" dan apa pun nama Anda.

The 1 setelah simbol $ pada dasarnya mengatakan kepada perintah echo, gunakan parameter pertama. Jika Anda mengganti $ 1 dengan $ 2 maka akan menampilkan "hello newell" (atau apa pun nama keluarga Anda).

Kebetulan jika Anda mengganti $ 2 dengan $ 3 dan menjalankan skrip hanya dengan 2 parameter, hasilnya hanya berupa "Hello".

Adalah mungkin untuk menampilkan dan menangani jumlah parameter yang benar-benar dimasukkan dan dalam tutorial nanti saya akan menunjukkan bagaimana menggunakan jumlah parameter untuk tujuan validasi.

Untuk menampilkan jumlah parameter yang dimasukkan, buka skrip greetme.sh (nano greetme.sh) dan ubah teks sebagai berikut:

#! / bin / bash echo "Anda memasukkan $ # nama" echo "hello $ @"

Tekan CTRL dan O untuk menyimpan skrip dan CTRL dan X untuk keluar dari nano.

$ # Pada baris kedua menampilkan jumlah parameter yang dimasukkan.

Sejauh ini semua ini baru tetapi tidak terlalu bermanfaat. Siapa yang butuh skrip yang hanya menampilkan "halo"?

Penggunaan yang sebenarnya untuk pernyataan gema adalah untuk memberikan output yang jelas dan bermakna kepada pengguna. Jika Anda dapat membayangkan bahwa Anda ingin melakukan sesuatu yang rumit yang melibatkan beberapa angka serius dan manipulasi file / folder, akan berguna untuk menampilkan kepada pengguna apa yang terjadi setiap langkah.

Sebaliknya, parameter input membuat skrip Anda interaktif. Tanpa parameter input, Anda memerlukan puluhan skrip semua melakukan hal yang sangat mirip tetapi dengan nama yang sedikit berbeda.

Dengan mengingat semua ini, ada beberapa parameter masukan lain yang berguna bahwa itu adalah ide yang baik untuk diketahui dan saya akan menyertakan semuanya dalam satu cuplikan kode.

Buka skrip greetme.sh Anda dan ubah sebagai berikut:

#! / bin / bash echo "Filename: $ 0" echo "ID Proses: $$" echo "---------------------------- --- "echo" Anda memasukkan $ # nama "echo" hello $ @ "

Tekan CTRL dan O untuk menyimpan file dan CTRL dan X untuk keluar.

Sekarang Jalankan skripnya (ganti dengan nama Anda).

sh greetme.sh

Kali ini skrip menampilkan yang berikut:

Filename: greetme.sh ID Proses: 18595 ------------------------------ Anda memasukkan 2 nama hello gary newell

$ 0 pada baris pertama skrip menampilkan nama skrip yang Anda jalankan. Perhatikan bahwa itu adalah dolar nol dan bukan dolar o.

The $$ pada baris kedua menampilkan id proses dari skrip yang sedang Anda jalankan. Mengapa ini berguna? Jika Anda menjalankan skrip di latar depan, Anda dapat membatalkannya hanya dengan menekan CTRL dan C. Jika Anda menjalankan skrip di latar belakang dan memulai perulangan dan melakukan hal yang sama berulang kali atau mulai menyebabkan kerusakan pada sistem Anda, Anda perlu untuk membunuhnya.

Untuk mematikan skrip yang berjalan di latar belakang, Anda memerlukan id proses dari skrip. Bukankah lebih baik jika skrip memberi id proses sebagai bagian dari outputnya. ( tentang perintah ps dan kill )

Akhirnya sebelum saya selesai dengan topik ini saya ingin membahas tentang ke mana output pergi. Setiap kali skrip berjalan sejauh ini, output telah ditampilkan di layar.

Ini sangat umum bagi keluaran skrip untuk ditulis ke file keluaran. Untuk melakukan ini jalankan skrip Anda sebagai berikut:

sh greetme.sh gary> greetme.log

Simbol> dalam perintah di atas menghasilkan teks "hello gary" ke sebuah file bernama greetme.log.

Setiap kali Anda menjalankan skrip dengan simbol> itu akan menimpa isi dari file output. Jika Anda lebih memilih untuk menambahkan file>> dengan >>.

Ringkasan

Anda sekarang harus dapat menulis teks ke layar dan menerima parameter input.