LINUX.ORG.RU

Вопрос по выводу строки

 , ,


0

2

Как в баше абсолютно точно вывести любую строку?
echo использовать не получится, потому что строка может начинаться на -, а -- в echo не работает.
С printf я дальше printf '%b ' "$@\\n" не разобрался и не знаю на сколько это правильно.
UPD:
нужна поддержка \n и \t символов

★★★★★

Последнее исправление: teod0r (всего исправлений: 1)

Ответ на: комментарий от Zmicier

почему printf '%b\n' "1\1" не выводит '1\1', а выводит '1'?
а printf '%s\n' '1\1' выводит нормально, но не выводит \n и \t для переноса строки и для таба?
можно сделать, чтобы printf выводил и то и то, как echo?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

может, \1 это спецсимвол, и его надо экранировать?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

почему printf '%b\n' «1\1» не выводит '1\1', а выводит '1'?

У меня выводит.

$ printf '%b\n' "1\1" | cat -v
1^A

а printf '%s\n' '1\1' выводит нормально

Как строку «1\1», а не 1 с «C-a».

но не выводит \n и \t для переноса строки и для таба?

Да. А почему должен?

можно сделать, чтобы printf выводил и то и то, как echo?

Можно все, но здесь это, я думаю, это нецелесообразно. Расскажите задачу, попробуем подумать.

может, \1 это спецсимвол, и его надо экранировать?

В контексте %b «\1» — это два символа, и первый из них (левая косая черта) — конечно же, имеет особое значение, и конечно же, если вы хотите его там иметь, то его стоит экранировать удвоением вне зависимости от того, что там дальше.

С echo -e разница минимальна — в об’еме поддерживаемых конструкций, полагаться на то, что он не измениться, не надо.

А какой там смысл у первого символа (C-a) в телетайпах — уточните сами, если любопытно.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.