Модуль ядра, который считывает события, открывая определенные файлы вместо использования API ядра для получения событий, мягко говоря, довольно необычен.
Я бы решил эту проблему, используя dd
или шестнадцатеричный редактор, чтобы исправить модуль ядра, чтобы вместо этого использовать некоторые другие пути, они создают эти пути как символические ссылки с udev
.
Когда вы source
сценарий оболочки -, это означает, что текущий экземпляр оболочки считывает строку сценария -за строкой -и выполняет команды на месте, как если бы вы ввели их на месте. команда -строка (, если вы выполняете вызов source
из подсказки )или как если бы вы скопировали -и -вставили их в сценарий (, если вы исходите из сценарий ).
Таким образом, различные сценарии оболочки file-1.sh
и file-2.sh
ведут себя как имеющие локально определенную переменную оболочки, которая только случайно имеет одно и то же имя some_value
в обоих случаях. Даже если вы запустите два скрипта параллельно, они ничего не будут знать друг о друге, и поэтому между ними нет перекрестных -взаимодействий -оболочка под-, в которой работает file-1.sh
, ничего не знает что оболочка sub -, в которой работает file-2.sh
, также имеет определенную переменную some_value
.
Кстати, ваша попытка создать арифметическое выражение в виде
some_value=$1+10
не будет иметь того эффекта, который вы можете себе представить. Для file-1.sh
будет буквально 5+10
, а для file-2.sh
— 10+10
буквально. Чтобы выполнить арифметическое вычисление, вы должны поместить его в арифметическое расширение, как в
some_value=$(($1+10))
Я бы рекомендовал проверять сценарии оболочки -с помощью shellcheck
, также доступного как отдельный инструмент во многих дистрибутивах Linux, для обнаружения синтаксических (и некоторых логических )ошибок.