systemd EnvironmentFile을 통해 배열을 전달하는 방법은 무엇입니까?

systemd EnvironmentFile을 통해 배열을 전달하는 방법은 무엇입니까?
[root@vm-devcjn-01-a tmp]# cat /tmp/test_service_script_fred
#!/bin/bash

sleep 30&
echo `date` $# args: $@ > $0.log

셸에서 호출할 때 배열을 전달하면 예상대로 작동합니다.

[root@vm-devcjn-01-a tmp]# args=("THIS" "THAT" "123456")
[root@vm-devcjn-01-a tmp]# ./test_service_script_fred  ${args[@]}
[root@vm-devcjn-01-a tmp]# tail test_service_script_fred.log
Wed 18 Oct 19:36:51 BST 2023 3 args: THIS THAT 123456

그러나 EnvironmentFile을 통해 전달된 동일한 배열을 사용하여 systemd 서비스를 통해 호출하면 다음이 수행되지 않습니다.

[root@vm-devcjn-01-a tmp]# cat StartArgs
args=("THIS" "THAT" "123456")

[root@vm-devcjn-01-a tmp]# systemctl cat test@fred
# /etc/systemd/system/[email protected]
# The test service unit template file
#
# version=$Header

[Unit]
Description=test %I instance

[Service]
Type=forking
KillMode=process
WorkingDirectory=/tmp
EnvironmentFile=/tmp/StartArgs
ExecStart=/bin/bash /tmp/test_service_script_%i ${args[@]}

[root@vm-devcjn-01-a tmp]# systemctl start test@fred
[root@vm-devcjn-01-a tmp]# tail test_service_script_fred.log
Wed 18 Oct 19:39:12 BST 2023 1 args:

관련 정보