Como posso imprimir caracteres unicode no printf salvos em uma variável?

0

Eu tenho este código para imprimir uma linha horizontal usando o caractere unicode \u2501 :

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

Mas não está dando o que eu esperava. Espero que a saída pareça com a gerada abaixo:

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

A razão pela qual eu quero testar o código no primeiro bloco é porque o código no segundo bloco funciona, mas é lento. Quando executo o segundo código de bloco, posso ver a linha inteira sendo desenhada em pares de caracteres por vez.

Meu pensamento foi provavelmente porque printf é chamado 80 vezes. Então, estou testando a primeira abordagem de bloco, onde eu gero uma string de \u2501\u2501.. (80 times) e chamo printf apenas uma para imprimir isso.

    
por Kaushal Modi 17.10.2014 / 17:30

1 resposta

0

O seguinte obtém o que eu quero no primeiro bloco de código na pergunta. É significativamente mais rápido que o segundo bloco de código.

#!/bin/tcsh
set horz_line = ""
foreach x ('seq 1 1 80')
    set horz_line = ${horz_line}'\u2550' # double line
end
printf "'echo $horz_line'\n"
unset horz_line
    
por 17.10.2014 / 18:11