Перевод строки -не является проблемой при заполнении массива. Для bash
они просто еще один разделитель слов в этом контексте.
В вашей команде LA= ((uptime | grep -o '[0-9]\+\.[0-9]\+*'))
две ошибки:
Пробел после =
. Это допустимый синтаксис, но он не делает того, что вы, вероятно, ожидаете.
Вместо того, чтобы присваивать значение остатка строки в $LA
, он устанавливает $LA
в пустую строку, а затем выполняет оставшуюся часть строки.
Это полезная функция для временного переопределения значения экспортированной переменной среды перед выполнением определенной команды. Как только команда завершается, исходное значение переменной восстанавливается. например.
$ VISUAL=/usr/bin/joe sensible-editor myfile.txt
....
(exit joe)
$ echo $VISUAL
/usr/bin/vi
Отсутствует a $
перед вторым (
. Без $
ваша команда не является подстановкой команд , это арифметика оболочки с фиктивными операндами и операторами.
Попробуйте вместо этого :
$ LA=($(uptime | grep -Eo '[0-9]+\.[0-9]+'))
$ typeset -p LA
declare -a LA=([0]="0.97" [1]="1.23" [2]="1.39")
Исполняемый файл ищет файл конфигурации в текущем рабочем каталоге? Если это так, то вы должны знать, что любые службы, запускаемые во время загрузки, обычно имеют свой рабочий каталог, установленный в /
, если служба специально не указывает иное.
В файле .service
вы можете использовать строку вида
WorkingDirectory=/home/user/demo
для запуска сервисного процесса уже cd
'd в нужную директорию. См. man systemd.exec
для более подробной информации.
Или исполняемый файл пытается использовать значение переменной среды HOME
как часть пути к файлу конфигурации? Службы вообще не обязательно должны иметь установленную переменную окружения HOME
. При необходимости вы можете установить его в файле .service
с помощью строки вида:
Environment="HOME=/home/user"
Однако это несколько неожиданное требование для программы, которая должна работать как служба systemd. Возможно, вы захотите использовать какую-то другую переменную среды вместо HOME
,и задокументируйте это явно.
В программе вы можете указать расположение файла конфигурации в виде полного пути, если вы еще этого не сделали.