echo в dash и bash
Здравствуйте.
В связи с продолжающимся переходом дебиана на традиционные ценности
(такие, как POSIX совместимый dash в качестве sh) возник вопрос с
командой echo.
В обеих оболочках это встроенная команда, однако у них разное поведение.
Например, по-умолчанию echo в bash (как и /bin/echo) не интерпретирует
escape последовательности (навроде \n, \t и т.п.), чтобы это включить
надо использовать параметр -e (и -E чтобы выключить). В dash нет
параметров -e/-E, есть только -n. И работает оно только в режиме
интерпретации. Поведение несколько странное, а в стандарте на шелл я не
нашёл вообще ничего про echo. Видимо, оно берёт за основу поведение
"POSIX-стандартного" /bin/echo.
Вопрос в следующем - как лучше делать переносимный скрипт, когда
требуется использовать escape последовательности?
Можно прописать вызовы /bin/echo, но будут ли они на не-GNU системе
работать так же (поддерживая ключ -e)? Можно использовать printf (это
вроде более переносимо, но как-то редко попадается на глаза, как будто
его предпочитают не использовать). Что правильнее?
--
С уважением
Игорь.
Reply to: