Bagaimana saya bisa membuat printf mencetak karakter unicode disimpan dalam variabel?

0

Saya memiliki kode ini untuk mencetak garis horizontal menggunakan karakter unicode \u2501:

#! / bin / tcsh
atur horz_line = "'"
foreach x (`seq 1 1 80`)
   set horz_line = "$ {horz_line} \\ u2501"
akhir
set horz_line = "$ {horz_line} \\ n '"
printf $ horz_line

Tapi itu tidak memberikan apa yang saya harapkan. Saya berharap output terlihat seperti yang dihasilkan oleh di bawah ini:

#! / bin / tcsh
foreach x (`seq 1 1 79`)
   printf '\ u2501'
akhir
printf '\ u2501 \ n'

Alasan mengapa saya ingin mencoba kode di blok pertama adalah karena kode di blok kedua berfungsi tetapi lambat. Ketika saya menjalankan kode blok kedua, saya bisa melihat seluruh baris digambar beberapa karakter sekaligus.

Pemikiran saya adalah bahwa itu mungkin karena printfdisebut 80 kali. Jadi saya mencoba pendekatan blok pertama di mana saya menghasilkan string \u2501\u2501.. (80 times)dan memanggil printfhanya satu untuk mencetaknya.

Kaushal Modi
sumber

Jawaban:

1

Berikut ini mendapatkan apa yang saya inginkan di blok kode pertama dalam pertanyaan. Ini secara signifikan lebih cepat daripada blok kode kedua.

#! / bin / tcsh
atur horz_line = ""
foreach x (`seq 1 1 80`)
    atur horz_line = $ {horz_line} '\\ u2550' # baris ganda
akhir
printf "` echo $ horz_line` \ n "
batalkan horz_line
Kaushal Modi
sumber
Bagus temukan! Bagi saya itu harus menjadi satu backslash: check="\u2718"lalu kemudianprintf "`echo -e $check`"
Heath Raftery