Я натолкнулся на странную, но действительную разницу между рабочим поведением команды sed
. Честно говоря, это стало для меня большим сюрпризом.
Теперь давайте рассмотрим справочные страницы sed
SUSE Linux и HP (IA64).
SUSE Linux:
ОПИСАНИЕ
Sed - это потоковый редактор. Потоковый редактор используется для выполнения основного текста
преобразования на входном потоке (файл или вход из конвейера).
Хотя в некотором роде похож на редактор, который разрешает редактирование по сценарию
(например, ed), sed работает, выполняя только один проход по входным данным, и
следовательно, более эффективно. Но это способность sed фильтровать текст
в трубопроводе, который особенно отличает его от других типов
редактора.
HP IA64:
ОПИСАНИЕ
sed копирует именованные текстовые файлы (стандартный ввод по умолчанию) в стандартный вывод, редактируемый в соответствии со сценарием, содержащим до 100 команд. Только полные строки ввода обрабатываются. Любой вводимый текст в конце файла, который не заканчивается символом новой строки, игнорируется
Подсвеченный текст, похоже, является основным отличием в рабочем поведении. Таким образом, все мои сценарии начали сбой в машине HP-UX IA64 во время портирования.
Вопрос:
а. Нет ли какого-либо базового стандарта, который заставляет каждого поставщика иметь базовое соответствие с реализацией?
б. Если есть какие-то команды, которые подтверждают, и другие, которые не могут подтвердить, кто-нибудь может опубликовать список, который придерживается стандартов.
с. Сейчас у меня много таких команд, которые используются как часть сценариев моего проекта. Каков наилучший способ проверить / избежать такого рода ошибок - кроме тестирования каждой команды для всех сценариев?
По существу, в таком сценарии я столкнулся бы с проблемой подтверждения программного обеспечения , работающего для всех сценариев на платформах поставщиков.