Shell perintah dan argumen untuk perintah yang muncul sebagai bernomor variabel shell: $0
memiliki nilai string dari perintah itu sendiri, sesuatu seperti script
, ./script
, /home/user/bin/script
atau apa pun. Argumen muncul sebagai "$1"
, "$2"
, "$3"
dan sebagainya. Hitungan argumen ada dalam variabel shell "$#"
.
Cara umum menangani ini melibatkan perintah shell getopts
dan shift
. getopts
sangat mirip dengan getopt()
fungsi C library. shift
memindahkan nilai $2
ke $1
, $3
ke $2
, dan seterusnya; $#
akan dikurangi. Kode akhirnya melihat nilai "$1"
, melakukan sesuatu menggunakan case
... esac
untuk memutuskan suatu tindakan, dan kemudian melakukan shift
untuk pindah $1
ke argumen berikutnya. Hanya perlu memeriksa $1
, dan mungkin $#
.
getopt()
adalah standar yang sangat mapan, tetapigetopt
executable tidak sama di seluruh distro / platform. Saya pengguna yang sekarang sepenuhnya dikonversigetopts
, karena ini adalah standar POSIX. Ini berfungsi dengan baikdash
juga, yang merupakan shell skrip pilihan sayaAnda dapat mengakses argumen yang diteruskan dengan di
$n
manan
nomor argumen -1, 2, 3, ...
. Anda memberikan argumen seperti yang Anda lakukan dengan perintah lain.sumber
Anda juga dapat meneruskan output dari satu skrip shell sebagai argumen ke skrip shell lain.
Dalam skrip shell Anda dapat mengakses argumen dengan angka seperti
$1
untuk argumen pertama dan$2
untuk argumen kedua dan sebagainya.Lebih lanjut tentang argumen shell
sumber
Formulir
adalah yang paling nyaman untuk
argv
. Pembatas arg adalah spasi putih, tetapi dapat diubah. Tidak ingat bagaimana begitu saja. Kemudian gunakanuntuk mengontrol aliran. Saya biasanya tidak merangkul getop jika
case ... esac
cukup.sumber
Pada skrip bash, saya pribadi suka menggunakan skrip berikut untuk mengatur parameter:
Dengan struktur ini, kami tidak bergantung pada urutan parameter, karena kami mendefinisikan huruf utama untuk masing-masing parameter. Selain itu, fungsi bantuan akan dicetak setiap saat parameternya salah. Ini sangat berguna ketika kita memiliki banyak skrip dengan parameter yang berbeda untuk ditangani. Ini berfungsi sebagai berikut:
sumber
myargument
menjadi$1
di dalammyscript
.sumber
Dalam skrip shell; itu menjadi nama variabel $ 1. Kata kedua menjadi nama variabel $ 2 dan seterusnya.
Lebih banyak ditemukan di manual shell (sh) di http://heirloom.sourceforge.net/sh/sh.1.html
sumber
Jika Anda terbiasa dengan Python argparse, dan tidak keberatan memanggil python untuk mem-parsing argumen bash, gunakan bash argparse ( https://github.com/mattbryson/bash-arg-parse ),
Lihat jawaban yang sama di sini: https://stackoverflow.com/questions/7069682/how-to-get-arguments-with-flags-in-bash-script/50181287#50181287
sumber
sumber
2> /dev/null
, 2) tidak menambahkan apa pun ke jawaban yang ada.