GNU/Linux >> Belajar Linux >  >> Linux

Saat menggunakan printf bagaimana cara keluar dari karakter khusus dalam skrip shell?

Untuk kepentingan orang-orang yang sampai di sini dengan mengklik hasil pencarian pertama setelah Googling "bash printf lolos", cara yang benar menggunakan printf untuk menghasilkan teks bash-escaped adalah:

printf " %q" "here is" "a few\n" "tests"

Output mana (tanpa baris baru tambahan):

 here\ is a\ few\\n tests

Coba

printf "%s\n" "$string"

Lihat printf(1)


Anda dapat menggunakan $' ' untuk menyertakan baris baru dan karakter tab, lalu echo biasa akan cukup:

#!/bin/bash 

get_lines() {    
   local string
   string+='The path to K:\Users\ca, this is good'
   string+=$'\n'
   string+='The second line'
   string+=$'\t'
   string+='123'
   string+=$'\n'
   string+='It also has to be 100% nice than %99'

   echo "$string"
}

get_lines

Saya juga telah membuat beberapa perubahan kecil lainnya pada skrip Anda. Selain membuat huruf kecil FUNCTION_NAME Anda, saya juga menggunakan sintaks fungsi yang lebih kompatibel secara luas. Dalam hal ini, tidak ada banyak keuntungan (seperti $' ' string adalah ekstensi bash) tetapi tidak ada alasan untuk menggunakan function func() sintaks sejauh yang saya ketahui. Juga, cakupan string mungkin juga lokal untuk fungsi yang digunakan, jadi saya mengubahnya juga.

Keluaran:

The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99

Bolehkah saya berkomentar bahwa "man printf" menunjukkan dengan jelas bahwa karakter "%" harus lolos melalui "%" lain sehingga printf "%%" menghasilkan satu "%"


Linux
  1. Bagaimana Membuat File Sementara Di Shell Script?

  2. Bagaimana Mengeksekusi Perintah Di Gnuplot Menggunakan Script Shell?

  3. Bagaimana cara menulis karakter non-ASCII menggunakan gema?

  1. Edit skrip shell saat sedang berjalan

  2. Tampilkan karakter khusus di Unix saat menggunakan Perintah 'kurang'

  3. Cara menjalankan skrip shell saat startup

  1. Bagaimana Cara Menghindari Kutipan Di Shell?

  2. Bagaimana cara menghitung jumlah tab di setiap baris menggunakan skrip shell?

  3. Bagaimana cara menghindari petunjuk saat menggunakan azcopy di Linux dalam skrip?