Cara meneruskan argumen baris perintah dalam skrip shell

Cara meneruskan argumen baris perintah dalam skrip shell

Skrip bash adalah file teks sederhana yang berisi kumpulan perintah. Bash Script dapat membantu dengan tugas administratif, otomatisasi tugas, dan melaksanakan beberapa perintah. Mereka digunakan untuk mengotomatiskan tugas/tindakan berulang.

Kita dapat meletakkan semua perintah yang berjalan di terminal ke dalam skrip bash dan sebaliknya. Skrip bash termasuk konsep pemrograman imperatif seperti loop, kondisional, dan fungsi.

Argumen baris perintah adalah parameter yang ditentukan dengan nama file skrip bash pada saat eksekusi. Argumen baris perintah memungkinkan skrip untuk melakukan tindakan dinamis berdasarkan input:

Cara meneruskan argumen ke skrip shell

Untuk meneruskan parameter ke skrip bash cukup tuliskan setelah nama skrip bash di terminal:

./-script saya.argumen sh  

Cara meneruskan beberapa argumen ke skrip shell

Anda juga dapat menentukan beberapa argumen yang dipisahkan oleh ruang bersama dengan nama file skrip bash:

./-script saya.sh arg_1 arg_2 arg_3… arg_n  

Kita dapat menggunakan variabel yang telah ditentukan untuk mengingat argumen ini dalam skrip bash. Argumen pertama dapat diingat oleh $ 1, yang kedua oleh $ 2, dan seterusnya. Variabel yang telah ditentukan sebelumnya "$ 0" mengacu pada naskah bash itu sendiri. Daftar beberapa variabel penting yang telah ditentukan sebelumnya diberikan di bawah ini:

  • [Email dilindungi] : Nilai semua argumen
  • $# : Jumlah total argumen
  • $$ : Proses ID shell saat ini

Sekarang kami akan menggunakan file bash bernama Hewan.SH sebagai contoh.

#!/bin/bash gema "hewan di selungkup pertama adalah: $ 1" gema "hewan di kandang kedua adalah: $ 2" gema "hewan di kandang ketiga adalah: $ 3" ​​gema "Total jumlah hewan di kebun binatang adalah: $#"echo" nama semua hewan adalah: $@"
1234567#!/bin/bash gema "hewan di selungkup pertama adalah: $ 1" gema "hewan di kandang kedua adalah: $ 2" gema "hewan di kandang ketiga adalah: $ 3" ​​gema "Jumlah total hewan di kebun binatang adalah: $#"echo" nama semua hewan adalah: [email dilindungi] "

Sekarang kita akan menjalankan skrip ini di terminal:

Cara lulus argumen yang berisi ruang

Jika suatu argumen terdiri dari banyak kata yang dipisahkan oleh ruang maka kita perlu melampirkannya dalam satu kutipan untuk meneruskannya sebagai argumen tunggal:

#!/bin/bash echo "Nama saya: $ 1"
123#!/bin/bash echo "Nama saya: $ 1"

Cara Lulus Argumen dengan Karakter Khusus

Kami juga dapat melewati karakter khusus sebagai argumen. Tetapi mereka perlu ditulis dengan backslash di depan mereka.

#!/bin/bash echo "Berapa banyak uang yang Anda belanjakan hari ini: $ 1"
123#!/bin/bash echo "Berapa banyak uang yang Anda belanjakan hari ini: $ 1"

Lewat argumen menggunakan bendera dan opsi dalam skrip shell

Menggunakan bendera dan opsi adalah cara umum lainnya untuk memberikan input ke skrip bash. Opsi selalu diikuti oleh nilai sementara bendera tidak diikuti oleh nilai apa pun.

Pertama, kami akan membuat skrip bash baru yang mengambil dua argumen (opsi) berbeda i.e. -n/-nama untuk nama, dan -I/-ID untuk nomor identifikasi.

#!/bin/bash args = $ (getOpt -a --Options n: i: - -long "name :, ID:" -"$@") eval set -"$ args" walaupun true; do case "$ 1" di -n |--name) name = "$ 2" echo "name: $ name" shift 2 ;; -i | --id) identifikasi = "$ 2" echo "id: $ identifikasi" shift 2 ;; --) merusak;; ESAC selesai
1234567891011121314151617181920#!/bin/bash args = $ (getOpt -a --Options n: i: - -long "name :, ID:" -"[email dilindungi]") eval set -"$ args" walaupun true; do case "$ 1" di -n |--name) name = "$ 2" echo "name: $ name" shift 2 ;; -i | --id) identifikasi = "$ 2" echo "id: $ identifikasi" shift 2 ;; --) merusak;; Esacdone

Dalam kode yang diberikan di atas terlebih dahulu, kami membuat variabel yang menyimpan semua nama pendek dan panjang dari opsi kami. Di baris kedua, kami mengevaluasi Args variabel. Kemudian kami menggunakan loop sementara untuk menetapkan blok kode untuk setiap opsi.

Dalam kode di atas shift digunakan untuk melewatkan nilai variabel. Digit yang mengikuti shift menentukan berapa banyak variabel yang dilewati.

Demikian pula

Sekarang kami akan menambahkan -v Bendera yang mencetak menu Verbose:

#!/bin/bash args = $ (getOpt -a --Options n: i: v - -long "name :, id:, verbose" -"$@") eval set -"$ args" walaupun benar; do case "$ 1" di -n |--name) name = "$ 2" echo "name: $ name" shift 2 ;; -i | --id) identifikasi = "$ 2" echo "id: $ identifikasi" shift 2 ;; -v | --verbose) echo "Silakan gunakan -n/-nama atau -i/-ID untuk meneruskan nama atau nomor identifikasi" break ;; --) merusak;; ESAC selesai
1234567891011121314151617181920212223#!/bin/bash args = $ (getOpt -a --Options n: i: v - -long "name :, id:, verbose" -"[email dilindungi]") set eval -"$ args" walaupun benar ; do case "$ 1" di -n |--name) name = "$ 2" echo "name: $ name" shift 2 ;; -i | --id) identifikasi = "$ 2" echo "id: $ identifikasi" shift 2 ;; -v | --verbose) echo "Silakan gunakan -n/-nama atau -i/-ID untuk meneruskan nama atau nomor identifikasi" break ;; --) merusak;; Esacdone

Bendera tidak diikuti oleh usus besar ketika mereka didefinisikan dalam naskah bash karena mereka tidak bertengkar dengan mereka tidak seperti opsi e.G. itu -N Opsi mengambil nama dengan itu seperti Rahul.

Kesimpulan

Seorang operator manusia yang melakukan tugas berulang secara manual sangat tidak efisien. Jadi tugas -tugas seperti itu harus otomatis. Skrip dapat membantu kita melakukan itu.

Dalam penulisan ini, kami telah belajar cara meneruskan argumen melalui baris perintah ke skrip bash. Argumen baris perintah membantu kami menulis skrip dinamis yang melakukan fungsi berbeda tergantung pada input.

Selain itu, kami juga membahas berbagai jenis argumen. Kami juga sedikit menyentuh variabel yang telah ditentukan sebelumnya.