GNU/Linux >> Belajar Linux >  >> Linux

Cara yang Tidak Biasa untuk Menggunakan Variabel Di Dalam Skrip Bash

Anda mungkin mengetahui variabel dalam skrip shell Bash.

Seperti bahasa pemrograman dan skrip lainnya, Anda menggunakan variabel untuk menyimpan data dan kemudian merujuknya nanti di perintah mendatang.

name="Linux Handbook"
echo "Hello $name!"

Dan itu akan mencetak "Hello Linux Handbook!".

Di luar contoh di atas, ada juga banyak hal yang dapat Anda lakukan dengan variabel, seperti mengisi nilai default saat variabel tidak disetel, dan menetapkan beberapa nilai ke satu variabel.

Biarkan saya menunjukkan kepada Anda penggunaan variabel yang tidak biasa dan canggih ini dalam skrip bash.

Menggunakan array

Tidak termasuk contoh di atas, jenis variabel paling umum yang akan Anda temukan di Bash adalah array:

name=("Linux Handbook" "It's FOSS")

Contoh di atas menetapkan Linux Handbook dan It's FOSS sebagai nilai untuk name variabel.

Bagaimana Anda mengakses setiap nilai?

Jika Anda menjalankan echo $name , Anda akan melihat bahwa itu mencetak nilai pertama, Linux Handbook . Untuk mengakses nilai lain, Anda harus menggunakan sintaks yang berbeda untuk variabel.

Untuk mulai menarik nilai-nilai lain, mari kita mulai dengan membiasakan diri dengan hal berikut:

echo "Hello ${name}!"

Ini adalah dasar untuk apa yang memungkinkan Anda memperoleh semua nilai variabel, dan juga apa yang akan memungkinkan Anda melakukan metode lainnya untuk berinteraksi dengan variabel di seluruh artikel ini.

Kembali ke contoh di atas, Anda dapat menggunakan ${variable[number]} sintaks untuk menarik item tertentu dari variabel:

echo "Hello ${name[1]}!"

Yang ini akan mencetak "Halo Ini FOSS!"

Jika Anda belum bisa melihat dari contoh di atas, item pertama dalam array sebenarnya dimulai dari 0, bukan 1.

Jadi untuk menarik Linux Handbook nilai, Anda akan menarik item pada posisi 0:

echo "Hello ${name[0]}!"

Demikian juga, cukup hilangkan [number] bagian hanya membuatnya default ke item pertama dalam array (yang berada di indeks 0).

Indeks hanya berarti posisi item dalam array. Demikian juga, indeks 0 adalah item 0 di dalam array.

Dan itu membentuk semua tipe variabel yang sebenarnya akan Anda temukan di dalam Bash.

Sekarang mari masuk ke bagaimana Anda benar-benar dapat bekerja dengan dan memodifikasi output dari variabel-variabel tersebut saat kita memanggilnya.

Menyetel nilai saat variabel tidak disetel

Anda dapat membuat variabel default kembali ke string tertentu saat variabel tidak disetel seperti ini:

${variable:-string}

Ambil contoh ini:

echo "Hello ${name:-nobody}!"

Karena variabel name tidak disetel, defaultnya akan menjadi nobody dan perintah di atas akan mencetak "Halo tidak ada!".

Jika variabel diset terlebih dahulu, nilainya akan digunakan:

name="Linux Handbook"
echo "Hello ${name:-nobody}!"

Perintah di atas mencetak "Halo Linux Handbook!"

Menyetel nilai saat variabel adalah sudah disetel

Anda juga dapat menyetel variabel untuk mengembalikan nilai tertentu saat variabel adalah mengatur. Ini akan menyebabkan variabel mencetak string tertentu setiap kali disetel, dan tidak mencetak apa pun saat tidak.

Sintaks untuk metode ini mirip dengan yang sebelumnya, tetapi menggunakan + tanda tangan sebagai ganti - .

${variable:+string}

Ambil contoh ini di mana nama variabel tidak disetel. Jadi itu tidak akan mencetak apa pun untuk bagian variabel itu dan output untuk perintahnya adalah "Halo !"

echo "Hello ${name:+person}!"

Ubah contoh di atas dan atur variabel name . Dengan metode khusus ini, itu tidak akan menggunakan nilai yang sudah ditetapkan dan menggunakan yang Anda berikan.

name="Linux Handbook"
echo "Hello ${name:+person}!"

Perintah di atas akan mencetak "Halo orang!".

Anda mungkin akan menemukan lebih banyak kasus penggunaan dengan ${variable:-string} sintaks, karena beberapa manfaat dari ${variable:+string} sudah dapat diselesaikan dengan alat lain seperti pengujian ([] ) operator:

Referensi tidak langsung ke variabel

Contoh berikutnya akan menggunakan sintaks berikut:

${!variable}

Yang ini sedikit lebih rumit dalam cara kerjanya, tetapi masuk akal setelah Anda melihat cara kerjanya:

name="Linux Handbook"
variable="name"

echo "Hello ${!variable}!"

Ini akan mencetak "Halo Linux Handbook".

! . itu karakter sebelum nama variabel menyebabkan nama variabel normal diganti, tetapi kemudian menggunakan nama itu tring untuk menemukan variabel yang relevan.

Demikian juga:

  • variable diganti dengan string name , diikuti oleh:
  • name diganti dengan nilai Linux Handbook .

Mencari panjang variabel

Mari kita gunakan cara sebelumnya, tetapi tukar ! karakter untuk # :

${#variable}

Menggunakan metode ini akan mencetak panjang variabel, tetapi akan bertindak sedikit berbeda tergantung pada apakah variabel tersebut adalah string atau array.

Menggunakan sintaks itu pada string akan menyebabkan variabel diganti dengan jumlah karakter dalam string.

variable="name"
echo "Length is ${#variable}."

Ini akan mencetak 4. Tetapi di sisi lain, menggunakannya pada array akan mencetak jumlah item di dalam array, yaitu ukuran array, yaitu 2 di sini.

variable=("name" "word")
echo "Length is ${#variable}."

Mengurangi huruf kecil dan menggunakan huruf besar pada string

Terakhir, Anda dapat menggunakan huruf besar dan huruf kecil untuk string menggunakan ^ dan , masing-masing operator.

Anda memberikan ini di akhir nama variabel seperti ini:

# Capitalizes
${variable^}
${variable^^}

# Lowercases
${variable,}
${variable,,}

Apa perbedaan antara menyediakan satu dan dua karakter?

Menyediakan hanya satu (yaitu ${variable^} ) hanya akan menyebabkan huruf pertama diubah, sementara memberikan dua (${variable^^} ) akan menyebabkan seluruh string diubah.

Contoh di bawah ini mencetak Name bukannya name :

variable="name"
echo "${variable^}"

Tapi yang ini mencetak NAME :

variable="name"
echo "${variable^^}"

Demikian pula, Anda juga dapat mencetak variabel dalam huruf kecil.

Contoh di bawah ini akan mencetak wIDEname :

variable="WIDEname"
echo "${variable,}"

Dan yang ini akan mencetak widename :

variable="WIDEname"
echo "${variable,,}"

Menutup

Ini hanya beberapa cara Anda dapat menggunakan variabel di dalam Bash. Anda dapat menemukan lebih banyak cara untuk berinteraksi dengan variabel di dalam dokumentasi Bash tentang ekspansi variabel.

Punya pertanyaan tentang cara kerja contoh di atas, atau ada yang tidak berfungsi dengan benar? Jangan ragu untuk meninggalkannya di bagian komentar di bawah.


Linux
  1. Lima cara menggunakan operator redirect di Bash

  2. Gunakan Variabel Di Dalam {} Ekspansi Tanpa `eval`?

  3. Berbagi Variabel di Beberapa Skrip Shell?

  1. Penanganan kesalahan dalam skrip Bash

  2. Skrip bash(I)

  3. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  1. Alias ​​​​dengan variabel di bash

  2. Gunakan variabel Bash dalam skrip sbatch SLURM

  3. Ekspor variabel dari bash dan gunakan dengan Python