GNU/Linux >> Belajar Linux >  >> Linux

Apa yang dilakukan % di string shell Linux?

Ketika % digunakan dalam pola ${variable%substring} itu akan mengembalikan konten variable dengan kejadian terpendek substring dihapus dari belakang variable .

Fungsi ini mendukung pola karakter pengganti - itulah sebabnya ia menerima bintang (tanda bintang) sebagai pengganti nol atau lebih karakter.

Harus disebutkan bahwa ini khusus untuk Bash - shell linux lain tidak harus berisi fungsi ini.

Jika Anda ingin mempelajari lebih lanjut tentang manipulasi string di Bash, saya sangat menyarankan untuk membaca halaman ini. Di antara fungsi praktis lainnya - misalnya - menjelaskan apa yang dimaksud dengan %% lakukan :)

Sunting:Saya lupa menyebutkannya ketika digunakan dalam pola $((variable%number)) atau $((variable1%$variable2)) % karakter akan berfungsi sebagai operator modulo. DavidPostill memiliki tautan dokumentasi yang lebih spesifik dalam jawabannya.

Ketika % digunakan dalam konteks yang berbeda, harus dikenali sebagai karakter biasa saja.


Manual Referensi Bash:Ekspansi Parameter Shell

${parameter%word}
${parameter%%word}

Kata diperluas untuk menghasilkan pola seperti pada perluasan nama file. Jika pola cocok dengan bagian batas dari nilai parameter yang diperluas , maka hasil dari perluasan tersebut adalah nilai dari parameter dengan pola pencocokan terpendek (‘%’ case) atau pola pencocokan terpanjang (‘%%’ kasus) dihapus. Jika parameter adalah ‘@’ atau ‘*’, operasi penghapusan pola diterapkan ke setiap parameter posisi pada gilirannya, dan perluasan adalah daftar yang dihasilkan. Jika parameter adalah variabel array yang disubskrip dengan ‘@’ atau ‘*’, operasi penghapusan pola diterapkan ke setiap anggota array secara bergantian, dan perluasan adalah daftar yang dihasilkan.


Dengan bereksperimen, saya menemukan bahwa kecocokan setelah % dibuang, saat string diapit oleh kurung kurawal (kurung kurawal).

Sebagai ilustrasi:

touch abcd         # Create file abcd

for file in ab*; do
 echo $file        # echoes the filename
 echo $file%       # echoes the filename plus "%"
 echo ${file%}     # echoes the filename
 echo "${file%}"   # echoes the filename
 echo
 echo "${file%c*}" # Discard anything after % matching c*
 echo "${file%*}"  # * is not greedy
 echo ${file%c*}   # Without quotes works too
 echo "${file%c}"  # No match after %, no effect
 echo $file%c*     # Without {} fails
done

Inilah hasilnya:

abcd
abcd%
abcd
abcd

ab
abcd
ab
abcd
abcd%c*

Linux
  1. Linux – Apa yang Dilakukan 'membuat Localmodconfig'?

  2. Apa Artinya `:-` Dalam Skrip Shell?

  3. Apa yang Dilakukan "set -f" Di Korn Shell?

  1. Apa itu pengguna Linux?

  2. Linux – Apa yang Dilakukan Opsi “nointremap” Linux?

  3. Apa artinya memuat rata-rata di Unix/Linux?

  1. Apa yang Digema $? Mengerjakan??

  2. Apa maksud - dalam perintah linux ini?

  3. Apa yang dilakukan `set -x`?