У меня есть этот код для печати горизонтальной линии, используя символ 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

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

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

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

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

1 ответ1

0

Следующее получает то, что я хочу в первом блоке кода в вопросе. Это значительно быстрее, чем второй блок кода.

#!/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .