Команда запускается из оболочки, но не запускается из script.sh

неопределенная ссылка] означает, что отсутствует библиотека, в которой определен mq_getattr. Поиск в Google по запросу mq_getattrпоказывает, что это стандартная функция Linux. Чтение man mq_getattrнаходит

ссылку с -lrt.

прямо вверху. Таким образом, вы должны добавить -lrtк своим параметрам компоновщика, однако вы делаете это в своей пользовательской цепочке инструментов.

1
27.03.2017, 09:45
2 ответа

Скрипт использует специфичную для 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.

5
27.01.2020, 23:10

Почти наверняка это происходит потому, что оболочка, которую вы используете для запуска сценария, не совпадает с вашей интерактивной оболочкой.

Поскольку строка shebang имеет вид #! / Bin / sh , ваш сценарий выполняется интерпретатором / bin / sh . В таких дистрибутивах, как Ubuntu, / bin / sh - это командная оболочка, которая не поддерживает все функции bash, такие как подстановка процесса (этот бит <() ).

Решение: либо вызвать сценарий с / путь / к / bash / путь / к / сценарию , либо исправить строку shebang ( #! / Путь / к / bash ).

16
27.01.2020, 23:10

Теги

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