[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: