Cara Lulus Argumen Barisan Perintah dalam Skrip Shell

Cara Lulus Argumen Barisan Perintah dalam Skrip Shell

Skrip bash adalah fail teks mudah yang mengandungi koleksi arahan. Skrip Bash boleh membantu tugas pentadbiran, automasi tugas, dan melaksanakan pelbagai arahan. Mereka digunakan untuk mengautomasikan tugas/tindakan berulang.

Kita boleh meletakkan semua arahan yang berjalan di terminal ke dalam skrip bash dan sebaliknya. Skrip bash termasuk konsep pengaturcaraan yang penting seperti gelung, keadaan, dan fungsi.

Argumen baris arahan adalah parameter yang ditentukan dengan nama fail skrip bash pada masa pelaksanaan. Argumen baris arahan membolehkan skrip melakukan tindakan dinamik berdasarkan input:

Cara Lulus Argumen ke Skrip Shell

Untuk lulus parameter ke skrip bash, tuliskannya selepas nama skrip bash di terminal:

./My-Test-Script.hujah sh  

Cara Lulus Pelbagai Argumen ke Skrip Shell

Anda juga boleh menentukan pelbagai argumen yang dipisahkan oleh ruang bersama dengan nama fail skrip bash:

./My-Test-Script.sh arg_1 arg_2 arg_3 ... arg_n  

Kita boleh menggunakan pembolehubah yang telah ditetapkan untuk menarik balik hujah -hujah ini dalam skrip bash. Hujah pertama dapat ditarik balik oleh $ 1, yang kedua oleh $ 2, dan sebagainya. Pemboleh ubah yang telah ditetapkan "$ 0" merujuk kepada skrip bash itu sendiri. Senarai beberapa pembolehubah penting yang telah ditetapkan diberikan di bawah:

  • [dilindungi e -mel] : Nilai semua argumen
  • $# : Jumlah argumen
  • $$ : Proses id cangkang semasa

Sekarang kita akan menggunakan fail bash bernama haiwan.sh sebagai contoh.

#!/bin/bash echo "Haiwan di kandang pertama adalah: $ 1" echo "haiwan di kandang kedua adalah: $ 2" echo "haiwan di kandang ketiga adalah: $ 3" ​​echo "jumlah bilangan haiwan di zoo adalah: $#"echo" Nama semua haiwan adalah: $@"
1234567#!/bin/bash echo "Haiwan di kandang pertama adalah: $ 1" echo "haiwan di kandang kedua adalah: $ 2" echo "haiwan di kandang ketiga adalah: $ 3" ​​echo "jumlah bilangan haiwan di zoo adalah: $#"echo" Nama semua haiwan adalah: [dilindungi e -mel] "

Sekarang kita akan menjalankan skrip ini di terminal:

Cara lulus argumen yang mengandungi ruang

Sekiranya hujah terdiri daripada pelbagai perkataan yang dipisahkan oleh ruang, maka kita perlu melampirkannya dalam petikan tunggal untuk menyampaikannya sebagai satu hujah:

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

Cara Lulus Argumen dengan Watak Khas

Kita juga boleh lulus watak khas sebagai hujah. Tetapi mereka perlu ditulis dengan backslashes di hadapan mereka.

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

Lulus hujah menggunakan bendera dan pilihan dalam skrip shell

Menggunakan bendera dan pilihan adalah satu lagi cara umum untuk memberi input ke skrip bash. Pilihan selalu diikuti dengan nilai sementara bendera tidak diikuti dengan apa -apa nilai.

Pertama, kami akan membuat skrip bash baru yang mengambil dua argumen yang berbeza (pilihan) i.e. -n/-nama untuk nama, dan -i/-id untuk nombor pengenalan.

#!/bin/bash args = $ (getOpt -a --options n: i: - -long "name :, id:" -"$@") set eval -"$ args" while true; Adakah kes "$ 1" dalam -n | --name) name = "$ 2" echo "Nama: $ name" shift 2 ;; -i | --id) pengenalan = "$ 2" echo "id: $ identification" shift 2 ;; -) Break ;; ESAC selesai
1234567891011121314151617181920#!/bin/bash args = $ (getopt -a --options n: i: - -long "name :, id:" -"[e -mel dilindungi]") set eval -"$ args" when true; Adakah kes "$ 1" dalam -n | --name) name = "$ 2" echo "Nama: $ name" shift 2 ;; -i | --id) pengenalan = "$ 2" echo "id: $ identification" shift 2 ;; -) Break ;; esacdone

Dalam kod yang diberikan di atas terlebih dahulu, kami membuat pemboleh ubah yang menyimpan semua nama pendek dan panjang pilihan kami. Pada baris kedua, kami menilai Args pembolehubah. Kemudian kami menggunakan gelung sementara untuk memberikan blok kod ke setiap pilihan.

Dalam kod di atas peralihan digunakan untuk melangkau nilai pembolehubah. Digit yang mengikuti peralihan menentukan berapa banyak pembolehubah yang dilangkau.

Begitu juga

Sekarang kita akan menambah a -v Bendera yang mencetak menu verbose:

#!/bin/bash args = $ (getopt -a --options n: i: v - -long "name :, id :, verbose" -"$@") set eval -"$ args" when true; Adakah kes "$ 1" dalam -n | --name) name = "$ 2" echo "Nama: $ name" shift 2 ;; -i | --id) pengenalan = "$ 2" echo "id: $ identification" shift 2 ;; -v | --verbose) echo "Sila gunakan -n/-nama atau -i/-id untuk lulus nama atau nombor pengenalan masing-masing" break ;; -) Break ;; ESAC selesai
1234567891011121314151617181920212223#!/bin/bash args = $ (getopt -a --options n: i: v - -long "name :, id :, verbose" -"[e -mel dilindungi]") set eval -"$ args" sementara benar ; Adakah kes "$ 1" dalam -n | --name) name = "$ 2" echo "Nama: $ name" shift 2 ;; -i | --id) pengenalan = "$ 2" echo "id: $ identification" shift 2 ;; -v | --verbose) echo "Sila gunakan -n/-nama atau -i/-id untuk lulus nama atau nombor pengenalan masing-masing" break ;; -) Break ;; esacdone

Bendera tidak diikuti oleh kolon apabila mereka ditakrifkan dalam skrip bash kerana mereka tidak mengambil sebarang hujah dengan mereka tidak seperti pilihan e.g. The -n pilihan mengambil nama dengannya seperti Rahul.

Kesimpulan

Pengendali manusia yang menjalankan tugas berulang secara manual sangat tidak cekap. Oleh itu, tugas -tugas sedemikian harus automatik. Skrip dapat membantu kita melakukannya.

Dalam penulisan ini, kami telah belajar bagaimana untuk lulus hujah melalui baris arahan ke skrip bash. Argumen baris arahan membantu kami menulis skrip dinamik yang melaksanakan fungsi yang berbeza bergantung pada input.

Selain itu, kami juga membincangkan pelbagai jenis hujah. Kami juga menyentuh sedikit pembolehubah yang telah ditetapkan.