GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan “${a:-b}” Untuk Penetapan Variabel Dalam Skrip?

Saya telah melihat beberapa skrip yang ditulis orang lain (khususnya Red Hat), dan banyak variabelnya ditetapkan menggunakan notasi berikut
VARIABLE1="${VARIABLE1:-some_val}"
atau perluas variabel lain
VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}"

Apa gunanya menggunakan notasi ini daripada hanya mendeklarasikan nilai secara langsung (mis., VARIABLE1=some_val )?

Apakah ada manfaat dari notasi ini atau kemungkinan kesalahan yang dapat dicegah?

Apakah :- memiliki arti khusus dalam konteks ini?

Jawaban yang Diterima:

Teknik ini memungkinkan variabel untuk diberi nilai jika variabel lain kosong atau tidak terdefinisi. CATATAN: “Variabel lain” ini bisa sama atau variabel lain.

kutipan

${parameter:-word}
    If parameter is unset or null, the expansion of word is substituted. 
    Otherwise, the value of parameter is substituted.

CATATAN: Formulir ini juga berfungsi, ${parameter-word} . Jika Anda ingin melihat daftar lengkap semua bentuk ekspansi parameter yang tersedia di Bash, saya sangat menyarankan Anda melihat topik ini di wiki Bash Hacker berjudul:“Ekspansi parameter“.

Contoh

variabel tidak ada

$ echo "$VAR1"

$ VAR1="${VAR1:-default value}"
$ echo "$VAR1"
default value

variabel ada

$ VAR1="has value"
$ echo "$VAR1"
has value

$ VAR1="${VAR1:-default value}"
$ echo "$VAR1"
has value

Hal yang sama dapat dilakukan dengan mengevaluasi variabel lain, atau menjalankan perintah dalam bagian nilai default dari notasi.

$ VAR2="has another value"
$ echo "$VAR2"
has another value
$ echo "$VAR1"

$

$ VAR1="${VAR1:-$VAR2}"
$ echo "$VAR1"
has another value

Contoh Lainnya

Anda juga dapat menggunakan notasi yang sedikit berbeda yang hanya VARX=${VARX-<def. value>} .

$ echo "${VAR1-0}"
has another value
$ echo "${VAR2-0}"
has another value
$ echo "${VAR3-0}"
0

Dalam $VAR1 di atas &$VAR2 sudah didefinisikan dengan string “memiliki nilai lain” tetapi $VAR3 tidak terdefinisi, jadi nilai default yang digunakan sebagai gantinya, .

Contoh Lain

$ VARX="${VAR3-0}"
$ echo "$VARX"
0

Memeriksa dan menetapkan menggunakan := notasi

Terakhir saya akan menyebutkan operator yang berguna, := . Ini akan melakukan pemeriksaan dan menetapkan nilai jika variabel yang diuji kosong atau tidak ditentukan.

Contoh

Perhatikan bahwa $VAR1 sekarang ditetapkan. Operator := melakukan tes dan tugas dalam satu operasi.

$ unset VAR1
$ echo "$VAR1"

$ echo "${VAR1:=default}"
default
$ echo "$VAR1"
default

Namun jika nilainya ditetapkan sebelumnya, maka dibiarkan saja.

$ VAR1="some value"
$ echo "${VAR1:=default}"
some value
$ echo "$VAR1"
some value

Tabel Referensi Handy Dandy

Terkait:Buat perintah dengan memasukkan string ke dalam tty?

Referensi

  • Ekspansi Parameter – Bash Hacker Wiki
  • 10.2. Substitusi Parameter
  • Ekspansi Parameter Bash

Linux
  1. Menggunakan AppImage untuk manajemen paket Linux

  2. Menggunakan Bash untuk otomatisasi

  3. Cara Melacak Skrip Python menggunakan trace.py

  1. Java Tidak dapat terhubung ke server jendela X11 menggunakan 'localhost:10.0' sebagai nilai variabel DISPLAY

  2. Cakupan variabel untuk skrip bash shell dan fungsi dalam skrip

  3. Menggunakan variabel di jalur perintah untuk ExecStart di layanan systemd

  1. Kiat Linux untuk menggunakan cron untuk menjadwalkan tugas

  2. Menggunakan alat SS untuk pemecahan masalah jaringan

  3. Apakah saya menggunakan virtio untuk tamu KVM saya?