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/bashmanakala 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/bashpada 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/bashbergema '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.