Тест POSIX и -a

Я проверил свой скрипт с checkbashisms, и я получил следующие предупреждения:

possible bashism in check_ssl_cert line 821 (test -a/-o): if [ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ] ; then 

В разделе 4.62.4 спецификаций POSIX я нахожу

primary -a primary Выполняет двоичный код и результаты первичного и первичного. Оператор -a имеет приоритет над оператором -o.

Почему -a и -o считаются не переносимыми?

2 Solutions collect form web for “Тест POSIX и -a”

Это не так, что он не переносимый, но что нет [ реализации, где он надежный, когда передано более 4 аргументов.

Даже в bash:

 $ ALTNAMES='=' bash -c '[ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ]' bash: line 0: [: too many arguments 

В соответствующем разделе говорится:

> 4 аргумента :

Результаты не определены.

[OB XSI] [Начало опции] В системах, совместимых с XSI, комбинации первичных и операторов должны оцениваться с использованием правил приоритета и ассоциативности, описанных ранее. Кроме того, двоичные праймеры сравнения строк «=» и «! =» Должны иметь более высокий приоритет, чем любой унарный первичный. [Вариант завершения]

-a и -o должны быть запрещены. Правильный способ – использовать && и || вместо операторов оболочки :

 if [ -n "$foo" ] && [ -n "$bar" ]; then 

Я даже считаю его более разборчивым.

Потому что они являются расширением XSI, которое может быть реализовано или не реализовано. См .: http://pubs.opengroup.org/onlinepubs/009695399/utilities/test.html

  • Сценарий Bash для извлечения идентификатора сообщения и отправки силы
  • Необходимо обновить сценарии оболочки, чтобы они могли работать в разных * nix-вариантах
  • Команда find и rm не подчиняется исключающему списку
  • start-stop-daemon возвращается всегда 0 (успех)
  • Измените dir из сценария без «процедуры оболочки» или «поиска сценария»,
  • Используйте sed для выбора потенциально многострочной записи журнала
  • Как выбрать уникальные значения массива?
  • Полные пары ключевых значений
  • Назначение переменной из файла, разделенной разделителем
  • Текстовый интерфейс пользователя
  • Сценарий Bash не работает, не меняет каталог
  • Interesting Posts

    Установка раздела Windows 8.1 в fstab не выполняется даже при выключении FastBoot

    Взаимодействие команд initrd и системных служб, выполняющих то же самое

    Есть ли способ создать новый файл и вставить текст в этот файл с помощью bash?

    Поиск всех «не двоичных» файлов

    Как я могу найти, какой пользователь обращается к файлу с помощью strace?

    Определите максимальную длину столбца для каждого столбца в упрощенном csv-файле (по одной строке в строке)

    Лучший / хороший инструмент для мониторинга сервера с веб-интерфейсом?

    Как производительность glusterFS ухудшится (если вообще) с> 2 узлами

    Установите CentOS на RAID (вручную) в системе UEFI

    arp-scan показывает машину, но я не могу ее прогнать

    Что произойдет, если мы подключим файловую систему, в которой работает e2fsck?

    Строка команды после команды, которая заканчивается на & – EX: nohup> log & && rm log

    Убить приостановленный процесс?

    разные MTU по одной ссылке

    Как настроить множественный выбор с помощью xclip

    Linux и Unix - лучшая ОС в мире.