Как заставить printf печатать символы юникода, сохраненные в переменной?

701
Kaushal Modi

У меня есть этот код для печати горизонтальной линии, используя символ Unicode \u2501:

#! / Bin / Tcsh set horz_line = "'" foreach x (`seq 1 1 80`) set horz_line = "$ \\ u2501" конец set horz_line = "$ \\ n '" printf $ horz_line 

Но это не дает того, что я ожидал. Я ожидаю, что результат будет выглядеть так, как показано ниже:

#! / Bin / Tcsh foreach x (`seq 1 1 79`) printf '\ u2501' конец printf '\ u2501 \ n' 

Причина, по которой я хочу опробовать код в первом блоке, заключается в том, что код во втором блоке работает, но работает медленно. Когда я запускаю код второго блока, я вижу, как целая линия рисуется по несколько символов за раз.

Я думал, что это, вероятно, потому что printfназывается 80 раз. Поэтому я пробую первый блок-подход, где я генерирую строку \u2501\u2501.. (80 times)и вызываю printfтолько один, чтобы напечатать это.

0

1 ответ на вопрос

0
Kaushal Modi

The following gets what I want in the first code block in the question. It is significantly faster than the second code block.

#!/bin/tcsh set horz_line = "" foreach x (`seq 1 1 80`) set horz_line = $'\\u2550' # double line end printf "`echo $horz_line`\n" unset horz_line 

Похожие вопросы