неопределенная ссылка
] означает, что отсутствует библиотека, в которой определен mq_getattr
. Поиск в Google по запросу mq_getattr
показывает, что это стандартная функция Linux. Чтение man mq_getattr
находит
ссылку с
-lrt
.
прямо вверху. Таким образом, вы должны добавить -lrt
к своим параметрам компоновщика, однако вы делаете это в своей пользовательской цепочке инструментов.
Скрипт использует специфичную для bash функцию, процесс-подстановка , обозначенный синтаксисом <(...)
. (См. Также Advanced Bash-Scripting Guide ).
Чтобы устранить этот башизм , вы можете переставить проблемную строку с:
join -t, $FILENAME <(nettop -t wifi -P -x -L1 | cut -d , -f 2,5,6 | tail -n +2)
на:
nettop -t wifi -P -x -L1 | cut -d , -f 2,5,6 | tail -n +2 | join -t, $FILENAME -
, что устранит эту ошибку при выполнении с / bin / sh.
Почти наверняка это происходит потому, что оболочка, которую вы используете для запуска сценария, не совпадает с вашей интерактивной оболочкой.
Поскольку строка shebang имеет вид #! / Bin / sh
, ваш сценарий выполняется интерпретатором / bin / sh
. В таких дистрибутивах, как Ubuntu, / bin / sh
- это командная оболочка, которая не поддерживает все функции bash, такие как подстановка процесса (этот бит <()
).
Решение: либо вызвать сценарий с / путь / к / bash / путь / к / сценарию
, либо исправить строку shebang ( #! / Путь / к / bash
).