> В обеих оболочках это встроенная команда, однако у них разное поведение. > Например, по-умолчанию echo в bash (как и /bin/echo) не интерпретирует > escape последовательности (навроде \n, \t и т.п.), В общем случае, может интерпретировать, а может и нет. Читай susv3. Полный бардак с этим echo.
> чтобы это включить надо использовать параметр -e (и -E чтобы > выключить). В dash нет параметров -e/-E, есть только -n. SUSv3 определяет только -n. Все остальное - undefined behaviour. > И работает > оно только в режиме интерпретации. Поведение несколько странное, а в > стандарте на шелл я не нашёл вообще ничего про echo. Видимо, оно > берёт за основу поведение "POSIX-стандартного" /bin/echo. > Вопрос в следующем - как лучше делать переносимный скрипт, когда > требуется использовать escape последовательности? Использовать printf и никаких echo! Не дай бог, начинается с минуса или содержит backslash. Смерть echo! А ведь хорошая когда-то команда была, соответствовала названию :-( > Можно прописать вызовы /bin/echo, но будут ли они на не-GNU системе > работать так же (поддерживая ключ -e)? > Можно использовать printf > (это вроде более переносимо, но как-то редко попадается на глаза, > как будто его предпочитают не использовать). Что правильнее? Безопаснее в смысле переносимости использовать printf, и использовать echo ТОЛЬКО для single-quoted константных строк. -- Best regards, Aleksey Cheusov. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]