Wie kann ich printf Unicode-Zeichen drucken lassen, die in einer Variablen gespeichert sind?

829
Kaushal Modi

Ich habe diesen Code, um eine horizontale Linie mit Unicode-Zeichen zu drucken \u2501:

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

Aber es gibt nicht das, was ich erwartet habe. Ich gehe davon aus, dass die Ausgabe wie folgt aussieht:

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

Der Grund, warum ich den Code im ersten Block ausprobieren möchte, ist, dass der Code im zweiten Block funktioniert, aber langsam ist. Wenn ich den zweiten Blockcode ausführe, kann ich sehen, dass die gesamte Zeile paarweise gezeichnet wird.

Ich dachte, das liegt wahrscheinlich daran, dass printfes 80 mal heißt. Also probiere ich den ersten Block-Ansatz aus, bei dem ich eine Zeichenkette generiere \u2501\u2501.. (80 times)und printfnur eine anrufe, um das auszudrucken.

0

1 Antwort auf die Frage

0
Kaushal Modi

Das Folgende bekommt, was ich im ersten Codeblock der Frage möchte. Es ist deutlich schneller als der zweite Codeblock.

#! / bin / tcsh set horz_line = "" foreach x (`seq 1 1 80`) set horz_line = $ '\\ u2550' # zweizeilig Ende printf "echo $ horz_line" \ n " horz_line nicht gesetzt