Observe que Environment="var=$(cmd arg)"
não avalia realmente a parte $()
. A variável é apenas definida para a string "$ (cmd arg)".
Além disso, ExecStart=... $var ...
substituirá $var
pela string, mas também dividirá a linha resultante nos espaços, assim você obterá efetivamente "$ (cmd" e "arg)" no resultado. Você precisa usar ${var}
para evitar isso e manter a string como um argumento.
No entanto, isso não funcionará, pois nada vai avaliar o $()
, portanto, é necessário chamar explicitamente bash -c
e passar o comando inteiro como um único argumento, colocando-o entre aspas. Essas aspas não são como citações básicas e não param a expansão de ${var}
(embora ele pare de expandir o $ var se ele não estiver por conta própria). Então, finalmente, isso deve funcionar:
ExecStart=/bin/bash -c '/sbin/ifconfig eth0 ${IP} netmask 255.255.255.0 up'