Saya harus mencetak tiga baris berikut dalam satu perintah cetak tanpa menggunakan perintah gema. Jadi saya telah memilih perintah printf. Berikut adalah tiga baris:
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
Apa yang telah saya lakukan sejauh ini adalah:
printf "
Different characters can be represented and supported
in the print command, for example:
x-y, X+Y, –, +, <, >, %, $, #, &.
"
Tapi saya mendapat kesalahan bash untuk baris ketiga ','.
Jadi, siapa pun akan menerangi saya.
command-line
bash
Narwen
sumber
sumber
print
perintahprintf
perintah.Jawaban:
Lebih baik digunakan:
Anda mendapatkan kesalahan itu, seperti yang orang lain katakan di sini, karena
%
karakter yang spesial dan harus melarikan diri.Lihat
man 1 printf
untuk info lebih lanjut.sumber
/your_string_to_search
dan kemudian tekan enter.printf
adalah bahwa%
karakter dan apa yang dilakukannya!%
adalah karakter khusus diprintf
. Itulah yang menyebabkan kesalahan. Anda harus menghindarinya%%
.$
juga dapat diganti ketika berada dalam tanda kutip ganda oleh kulit luar, jadi Anda harus menghindari itu (\$
). Biasanya hanya lebih mudah menggunakan tanda kutip tunggal.sumber
$variable
diganti dengan shell, bukan olehprintf
. Jika Anda mengelilingi string Anda dengan tanda kutip tunggal dan bukan tanda kutip ganda,$
tidak akan ada interpolasi oleh shell dan akan diteruskan langsung keprintf
.$
juga spesial ketika diikuti oleh{
atau oleh simbol parameter khusus , atau satu digit atau lebih . Namun, ide dasar dari apa yang Anda katakan itu benar.yang %khusus untuk printf: itu adalah char terkemuka dalam format specifier. Jika Anda ingin persentase literal, gunakan
%%
sumber
Agak mengejutkan untuk melihat bahwa ketika Anda tidak diizinkan untuk menggunakan
echo
perintah yang Anda pilih untuk menggunakanprintf
perintah sebagai gantinya.Mengapa tidak
cat
?sumber
$foo
dalam teks, gunakancat <<'EOF'
sebagai ganticat <<EOF
.printf
adalah cetak yang diformat yang menggunakan format string sebagai parameter pertama. Parameter lainnya digunakan dalam format string. Tiga hal yang perlu diingat saat menggunakanprintf
adalah:Meskipun banyak bahasa memiliki
printf
pernyataan / perintah / fungsi, mereka semua sedikit berbeda sehingga selalu memverifikasi detail dalam dokumentasi khusus bahasa (C, bash, php, perl, dll.),Anda tidak boleh menggunakan informasi yang diberikan pengguna dalam string format. Ini selalu merupakan kelemahan keamanan. Jika Anda ingin menampilkan string yang disediakan pengguna, gunakan string format seperti
"%s"
.\
Tanda garis miring terbalik ( ) dan tanda persen (%
) adalah karakter escape yang mengubah arti karakter berikut jika Anda ingin karakter escape muncul di output Anda, itu harus melarikan diri atau ditarik dari parameter lain. Tanda dolar ($
) tidak khusus untuk printf, tetapi khusus untuk shell, jadi berhati-hatilah dengan kutipan Anda.printf
bagus untuk memformat angka. lihat halaman manual untuk detailnyasumber
Seperti yang disebutkan orang lain, the
%
simbol ini khusus untukprintf
.Jika Anda hanya ingin mencetak string seperti apa adanya, berikan
printf
%s
sebagai argumen pertama, dan string yang dikelilingi tanda kutip tunggal sebagai argumen kedua:Menggunakan tanda kutip tunggal dan bukan tanda kutip ganda menghentikan shell dari menyisipkan simbol seperti
$
.sumber