/bin/sh - оператор echo >> работает не так, как ожидалось

[114154] В [114500]zsh[114501] вы можете использовать [114502] setopt[114503], чтобы показать опции включенные и [114504] unsetopt[114505], чтобы показать не включенные:

В [114506] bash[114507], вы можете использовать [114508] shopt -p[114509].[114157].

2
20.06.2015, 22:00
2 ответа

В bash echo является встроенной функцией, поэтому вы получаете такое поведение. В sh это не встроенная функция . Похоже, sh использует свою встроенную команду «echo», которая отличается.

Поэтому попробуйте использовать / bin / echo , а не без / bin / .

1
27.01.2020, 22:12

Если вы хотите сохранить переносимость, вы не можете использовать echo или printf , оба обрабатывают неуказанные escape-последовательности \ xXX как определенные в POSIX.

Даже в системе GNU можно изменить поведение echo , встроенного или / bin / echo . Вы можете попробовать:

$ POSIXLY_CORRECT=1 /bin/echo -en '\x61'
-en \x61

$ env BASHOPTS=xpg_echo POSIXLY_CORRECT=1 bash -c "echo -en '\x61'"
-en a

(Вы должны прочитать this для более подробной информации).

Со стандартным набором инструментов POSIX можно использовать awk :

$ awk 'BEGIN{printf "%c%c%c..", 97, 98, 99}'
abc..
1
27.01.2020, 22:12

Теги

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