Bagaimana untuk Mengendalikan Argumen Baris Perintah dalam Bash?

Bagaimana Untuk Mengendalikan Argumen Baris Perintah Dalam Bash



Di Linux, kami menggunakan argumen baris arahan sebagai input untuk skrip bash. Bash boleh mengambil hujah baris arahan ini secara berurutan dan menghuraikannya sebagai pilihan. Argumen ini membolehkan anda mempengaruhi tindakan dan output skrip secara dinamik.

Anda boleh mengkonfigurasi hujah ini secara berbeza untuk mempengaruhi input dan output. Itulah sebabnya pengendalian args baris perintah dalam bash adalah penting, tetapi ramai pengguna baharu perlu belajar cara melakukannya. Jadi dalam panduan ini, kami akan menerangkan cara yang berbeza untuk mengendalikan hujah baris arahan dalam bash.







Bagaimana untuk Mengendalikan Argumen Baris Perintah dalam Bash?

Terdapat pelbagai cara untuk mengendalikan args baris arahan dalam Bash jadi mari kita lihat mereka untuk mendapatkan maklumat ringkas:



Fungsi getopt



Fungsi getopt berguna kerana ia menyediakan pilihan dan sintaks untuk mentakrif dan menghuraikan hujah dalam bash. Ia ialah fungsi terbina dalam Linux yang boleh anda gunakan semasa mencipta fail pangkalan data atau laporan dalam format tertentu berdasarkan hujah. Fungsi getopt membantu menghuraikan argumen baris perintah pendek kerana terdapat dua jenis argumen:





  • Hujah ringkas: Ini ialah hujah satu aksara diikuti dengan tanda sempang. Contohnya, -a, -l, -h, dsb., ialah beberapa contoh hujah tunggal.

  • Hujah panjang: Ini ialah hujah berbilang aksara diikuti dengan tanda sempang berganda. Terdapat pelbagai contoh hujah yang panjang, seperti –semua, –senarai, –bantuan, dsb.

Mari kita ambil contoh di mana kita akan mengendalikan hujah baris arahan menggunakan utiliti getopt. Kami telah mencipta skrip bash bernama 'getopt.sh' yang mengandungi maklumat berikut:



!/ tong sampah / bash

sementara getopts 'A:B:C:D:' butiran; buat

kes ' $butiran ' dalam

A )

bergema “Nama Warganegara ialah $OPTARG ' ;;

B )

bergema 'Kad pengenalan warganegara adalah $OPTARG ' ;;

C )

bergema “Tempat Lahir ialah $OPTARG ' ;;

D )

bergema 'Pekerjaan adalah $OPTARG ' ;;

* )

keluar 1 ;;

esac

selesai

syif ' $(($OPTING -1) )'



jika [ ! -Dengan $1 ] ; kemudian

bergema 'Status Perkahwinan $1'

lain

bergema 'Tiada Penyertaan'

keluar 1

jadilah



jika [ ! -Dengan $2 ] ; kemudian

bergema 'Ahli Keluarga $2'

jadilah

Sekarang mari kita laksanakan skrip dengan argumen yang diperlukan dalam input:

Seperti yang anda lihat dalam imej di atas, kami menjalankan skrip dengan fungsi getopt sahaja dan kemudian menambah argumen biasa untuk mendapatkan hasil yang lengkap.

Menggunakan Bendera

Bendera hanyalah aksara tunggal yang didahului oleh tanda sempang(-). Apabila kami lulus hujah menggunakan fungsi getopt, kami menggunakan bendera. -a, -b, -c ialah beberapa contoh bendera. Contohnya,  skrip memerlukan nama warganegara, ID, tempat, umur dan pekerjaan. Oleh itu, kami menggunakan bendera j, k, l, m, n, untuk mentakrifkan nama warganegara, ID, tempat, umur dan pekerjaan secara serentak:

#!/bin/bash

manakala getopts j:k:l:m:n: flag_info

buat

kes ' ${flag_info} ' dalam
< ol >
< itu > j ) nama warganegara = ${OPTARG} ;; itu >
< itu > k ) warganegara = ${OPTARG} ;; itu >
< itu > l ) tempat = ${OPTARG} ;; itu >
< itu > m ) umur = ${OPTARG} ;; itu >
< itu > n ) pekerjaan = ${OPTARG} ;; itu >
ol >
esac

selesai

bergema 'Berikut ialah butiran yang dimasukkan:'

bergema 'Nama Warganegara: $nama warganegara ' ;

bergema 'ID Warganegara: $citizenid ' ;

bergema 'Tempat: $tempat ' ;

bergema 'Umur: $umur ' ;

bergema 'Pekerjaan: $pekerjaan ' ;

Skrip akan memberikan hasil berikut dalam terminal:

. /< skrip > .sh -j Danny -k 476 -l Toronto -m 25 -n Pengarang

menggunakan [e-mel dilindungi] Dengan Gelung

' [e-mel dilindungi] ” pembolehubah tidak lain adalah tatasusunan semua argumen input. Kita boleh menghantar sebarang bilangan input menggunakan ' [e-mel dilindungi] ” pembolehubah. Anda boleh menggunakan pembolehubah ini sebagai gelung untuk melelaran melalui hujah. ' [e-mel dilindungi] ” pembolehubah berguna kemudian; anda tidak tahu saiz input dan tidak boleh mengambil hujah kedudukan. Oleh itu, anda boleh menggunakan ' [e-mel dilindungi] ”  daripada mentakrifkan fungsi getopt berulang kali. Berikut ialah contoh penggunaan gelung dan [e-mel dilindungi] bersama-sama dalam skrip:

#!/bin/bash

pada satu = ( “$ @ )



jika [ $# -gt 1 ]

kemudian



Tambah =$ ( ( ${num[0]} + ${num[1]} ) )

bergema 'Tambahan semua nombor ialah: $tambah '



penolakan =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

bergema 'Penolakan nombor ialah: $tolak '



membiak =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )

bergema 'Pendaraban nombor ialah: $multiply '



pembahagian1 =$ ( ( ${num[0]} / ${num[1]} ) )

bergema 'Pembahagian ${num[0]} dan ${num[1]} ialah: $bahagian1 '



pembahagian2 =$ ( ( ${num[1]} / ${num[2]} ) )

bergema 'Pembahagian daripada ${num[1]} dan ${num[2]} ialah: $bahagian2 '



pembahagian3 =$ ( ( ${num[0]} / ${num[2]} ) )

bergema 'Pembahagian daripada ${num[0]} dan ${num[2]} ialah: $bahagian2 '



jadilah

Skrip di atas melakukan pengiraan aritmetik yang berbeza berdasarkan argumen baris arahan. Sebagai contoh, kami telah memasukkan 50, 35, dan 15 sebagai input:

Menggunakan Parameter Kedudukan

Anda boleh mengakses parameter kedudukan apabila mereka mengakses $1 dahulu, kemudian $2, dan seterusnya. Sebagai contoh, mari buat skrip yang membaca nama sebagai hujah pertama dan kemudian bandar sebagai yang kedua. Walau bagaimanapun, jika anda melepasi bandar dahulu dan kemudian nama, maka ia menganggap nama itu sebagai bandar dan sebaliknya. Mari kita mendalami skrip berikut untuk memahami konsep ini:

#!/bin/bash

bergema 'Berikut ialah butiran yang dimasukkan'

bergema 'nama $1'

bergema 'bandar $2'

Anda perlu menambah nama dan bandar pada masa melaksanakan skrip dalam terminal:

Mengakhiri

Ini adalah semua yang anda perlu tahu tentang kaedah untuk mengendalikan argumen baris arahan dalam bash. Kami telah menerangkan pendekatan berbeza yang boleh anda cuba dengan contoh yang sesuai. Terdapat pelbagai arahan jika anda ingin menambah argumen dalam skrip. Jadi pastikan anda melawati Linuxhint untuk mengetahui lebih lanjut tentang mereka.