Не приведет ли включение массивов в POSIX к нарушению стандарта POSIX?

Я просто хочу добавить причину, по которой ваша команда не работает

find./ -type f -ls | grep 'Feb 28' | tar -czf somefile3.tar --null -T -

Выводом find является список имен файлов вместе с другой информацией, такой как дата. Grep выводит полные строки с соответствующей датой. Tar ожидает только имена файлов, и он ожидает, что они разделены нулевыми -байтами, а не новыми строками.

2
16.08.2020, 03:25
1 ответ

Я не знаю, на какой текст вы ссылаетесь, но я почти уверен, что это не так, поскольку bashи ksh93должны быть совместимы с POSIX, и если массивы вызывали оболочки POSIX разбить, то эти снаряды не подчинились бы.

Однако это не означает, что POSIX, вероятно, будет включать их. Во-первых, bashи ksh93могут по-разному реализовывать массивы, и POSIX не хотел бы указывать функцию, которая вел себя по-разному в широко распространенных исторических реализациях.

Во-вторых, POSIX обычно не определяет многие функции. Только сейчас есть даже предложение требовать local, которое широко используется почти в каждой оболочке POSIX с открытым исходным кодом, кроме ksh93. Точно так же можно было бы использовать viреализацию, реализующую только функции POSIX, но большинство пользователей сочли бы ее довольно скудной по функциям.

Наконец, POSIX предпочитает стандартизировать то, что уже доступно в большинстве реализаций, а массивы оболочки не являются такой вещью. В dashих нет, как и в большинстве оболочек, с которыми он имеет общее происхождение, а также в крошечных реализациях, таких как busybox. Полная среда POSIX может быть относительно небольшой, и это очень удобно для людей, которым необходимо работать со встроенными системами, поэтому приятные атрибуты от -до -часто опускаются в пользу простоты.

Также обратите внимание, что то, что широко распространенная реализация с открытым исходным кодом имеет функцию, не означает, что она будет в коммерческих средах Unix. Даже если бы POSIX определял массивы в новой версии, прошло бы много лет, прежде чем все эти системы были обновлены для их поддержки.

2
18.03.2021, 23:12

Теги

Похожие вопросы