Penguasaan Baris Perintah Linux & Penskripan Bash · Pelajaran

Argumen dan Pilihan Skrip ($@, $#, getopts)

Pelajari cara menghantar argumen kepada skrip dan menghuraikan pilihan baris perintah menggunakan pemboleh ubah khas serta 'getopts'.

Pelajaran 3 daripada 412 langkah

Argumen dan Pilihan Skrip ($@, $#, getopts) ialah pelajaran Penguasaan Baris Perintah Linux & Penskripan Bash percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Penguasaan Baris Perintah Linux & Penskripan Bash, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Penguasaan Baris Perintah Linux & Penskripan Bash merangkumi sejumlah 4 pelajaran.

Hujah Skrip: Mengapa Menggunakannya?

Pernahkah anda menggunakan arahan seperti ls -l atau cp file1 file2? -l, file1 dan file2 semuanya ialah hujah! Hujah tersebut memberitahu arahan perkara yang perlu dilakukan atau perkara yang perlu diproses.

Dalam penulisan skrip Bash, hujah menjadikan skrip anda fleksibel. Daripada menetapkan nilai secara terus dalam skrip, skrip anda boleh menerima masukan terus daripada baris arahan semasa dijalankan.

Mencapai Hujah Kedudukan

Apabila anda menjalankan skrip dengan hujah, Bash secara automatik menetapkannya kepada pemboleh ubah khas yang dipanggil parameter kedudukan.

  • Hujah pertama ialah $1.
  • Hujah kedua ialah $2.
  • Begitulah seterusnya sehingga $9.

Untuk hujah selepas hujah ke-9, anda perlu menggunakan pendakap keriting seperti ${10}, ${11} dan sebagainya. Pemboleh ubah ini menyimpan nilai yang dihantar kepada skrip anda.

Demo: Hujah Kedudukan

Mari lihat cara mencapai hujah ini dalam skrip. Simpan skrip ini sebagai greet.sh dan jalankannya dengan ./greet.sh Alice Bob.

#!/bin/bash

echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"

`$0` dan `$#`: Maklumat Skrip

Bash menyediakan beberapa lagi pemboleh ubah khas yang memberikan maklumat tentang skrip itu sendiri dan hujahnya:

  • $0: Pemboleh ubah ini menyimpan nama skrip yang sedang dilaksanakan. Ia berguna untuk mesej ralat atau pengelogan.
  • $#: Pemboleh ubah ini mengandungi jumlah hujah kedudukan yang dihantar kepada skrip.

Pemboleh ubah ini membantu menjadikan skrip anda lebih teguh dan mudah digunakan.

Demo: `$0` dan `$#`

Jalankan skrip ini dengan bilangan hujah yang berbeza, contohnya ./info.sh one two three atau hanya ./info.sh.

#!/bin/bash

echo "Script name: $0"
echo "Number of arguments received: $#"

`$@` berbanding `$*`: Semua Hujah

Kadangkala anda perlu merujuk kepada semua hujah serentak. Bash menawarkan dua cara:

  • $@: Dikembangkan menjadi hujah yang berasingan. Apabila diletakkan dalam tanda petikan berganda ("$@"), setiap hujah kekal sebagai perkataan yang berbeza, walaupun hujah itu mengandungi ruang. Cara ini biasanya lebih sesuai untuk gelung.
  • $*: Dikembangkan menjadi satu rentetan yang mengandungi semua hujah. Apabila diletakkan dalam tanda petikan berganda ("$*"), semua hujah digabungkan menjadi satu perkataan, dipisahkan oleh aksara pertama IFS (Pemisah Medan Dalaman, biasanya ruang).

Sentiasa gunakan "$@" semasa mengulangi hujah untuk mengekalkan ruang!

Demo: Mengulangi dengan `"$@"`

Skrip ini menunjukkan cara "$@" mengendalikan hujah yang mengandungi ruang dengan betul. Jalankannya seperti ini: ./loop_args.sh hello "world wide" web

#!/bin/bash

echo "Processing arguments with \"$@\":"
for arg in "$@"; do
  echo "  Argument: [$arg]"
done

echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
  echo "  Argument: [$arg]"
done

Pilihan: Melangkaui Hujah Kedudukan

Hujah kedudukan amat baik untuk kes mudah, tetapi bagaimana jika skrip anda memerlukan bendera pilihan atau parameter bernama, seperti -v untuk mod terperinci atau -f filename?

Di sinilah pilihan baris arahan digunakan. Pilihan ini menjadikan skrip lebih fleksibel dan mudah digunakan, serta membolehkan pengguna menentukan tetapan dalam sebarang susunan.

Bash menyediakan arahan getopts khusus untuk menghuraikan jenis pilihan ini.

Sintaks `getopts`: `optstring`

Sintaks asas untuk getopts ialah: getopts optstring variable.

  • optstring: Rentetan aksara pilihan yang sah. Jika sesuatu pilihan memerlukan hujah (seperti -f filename), ikut aksara tersebut dengan tanda titik bertindih (contohnya, f:).
  • variable: Nama pemboleh ubah tempat getopts menyimpan aksara pilihan yang sedang diproses (contohnya, opt).

getopts juga menetapkan OPTARG untuk hujah pilihan dan OPTIND untuk indeks hujah seterusnya.

Demo: `getopts` Asas

Skrip ini memproses pilihan -v (mod terperinci) dan -f (fail). Cuba jalankannya: ./options.sh -v -f mydata.txt -x atau ./options.sh -vf mydata.txt

#!/bin/bash

while getopts "vf:" opt; do
  case $opt in
    v)
      echo "Verbose mode enabled."
      ;;
    f)
      echo "File specified: $OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

Semakan Pantas: Pemboleh Ubah Hujah

Pertimbangkan skrip berikut dan cara skrip itu dilaksanakan:

#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
  echo "Arg: $arg"
done

Jika anda menjalankan: ./myscript.sh "Hello World" 123

Apakah keluarannya?

Imbas Kembali: Hujah dan Pilihan

Syabas! Anda telah belajar cara menjadikan skrip Bash anda lebih serba boleh:

  • Hujah Kedudukan: Gunakan $1, $2 dan sebagainya untuk mencapai hujah secara terus.
  • Pemboleh Ubah Khas: $0 untuk nama skrip, $# untuk bilangan hujah dan "$@" untuk mengulangi semua hujah dengan selamat.
  • Pilihan Baris Arahan: Gunakan getopts untuk menghuraikan pilihan bernama (seperti -v) dan hujahnya (-f filename), sekali gus menjadikan skrip anda lebih teguh dan mudah digunakan.

Berlatih menggunakan semua ini dalam skrip anda sendiri untuk membina alat baris arahan yang berkuasa dan fleksibel!

Percuma untuk bermula

Pelajari Bash dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
22
Pelajaran
88

Soalan Lazim

Adakah pelajaran “Argumen dan Pilihan Skrip ($@, $#, getopts)” percuma?

Ya — teks penuh “Argumen dan Pilihan Skrip ($@, $#, getopts)” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Penguasaan Baris Perintah Linux & Penskripan Bash, tingkat taraf kepada CoddyKit PRO. Kursus Penguasaan Baris Perintah Linux & Penskripan Bash merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Argumen dan Pilihan Skrip ($@, $#, getopts)”?

Pelajari cara menghantar argumen kepada skrip dan menghuraikan pilihan baris perintah menggunakan pemboleh ubah khas serta 'getopts'. Anda berlatih Penguasaan Baris Perintah Linux & Penskripan Bash menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Penguasaan Baris Perintah Linux & Penskripan Bash?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Penguasaan Baris Perintah Linux & Penskripan Bash di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Argumen dan Pilihan Skrip ($@, $#, getopts)” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Penguasaan Baris Perintah Linux & Penskripan Bash ini?

Ya. Setiap pelajaran Penguasaan Baris Perintah Linux & Penskripan Bash menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Binaan Gelung (for, while)
  2. Fungsi dalam Skrip Bash
  3. Argumen dan Pilihan Skrip ($@, $#, getopts)
  4. Pernyataan case dan Pemadanan Corak
← Kembali ke Penguasaan Baris Perintah Linux & Penskripan Bash