Почему адрес ошибки 0x00000006 для SIGSEGV на 32-битной платформе ARM?

/ bin / sh - это версия bash (не оболочки Bourne) на OS X. Она активирована в режиме POSIX и имеет несколько других изменений . Один из них заключается в том, что опция оболочки xpg_echo включена по умолчанию, так что встроенное эхо соответствует POSIX.

http://pubs.opengroup.org/onlinepubs/009696799/utilities/echo. html :

Реализации не должны поддерживать какие-либо опции

blockquote>

http://www.gnu.org/software/bash/ manual / bash.html # Bash-POSIX-Mode :

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

[...]

Как уже отмечалось выше, Bash требует, чтобы параметр xpg_echo был включен, чтобы встроенный echo был полностью совместим .

blockquote>

Вы можете отключить xpg_echo, использовать / bin / echo или, желательно, просто использовать printf:

sh -c 'shopt -u xpg_echo; echo -n aa'
sh -c '/bin/echo -n aa'
sh -c 'printf %s aa'

0
задан Devboard Fan 21 September 2013 в 03:52
поделиться