Musíš ten script přece volat s parametry, který očekává.
muj_skript.sh <uzivatel> <home>
Přidej ty parametry do
ExecStart= své systemd unity, stejně jako bys script spouštěl z příkazové řádky.
Jinak ten script má celkem dost problémů:
Volání
adduser bys měl ošetřit pro libovolné (i nevalidní) hodnoty parametrů, např. obsahující mezery nebo začínající pomlčkou:
/usr/sbin/adduser --home="$home_directory" -- "$user"
Pokud má být script neinteraktivní, nemá v něm co dělat volání interaktivního
sudo. Můžeš explicitně kontrolovat ještě před voláním
adduser, zda je skript spuštěn pod rootem, jinak skončit chybou; místo toho abys nechal na nedostatek práv selhat až volání
adduser.if [[ $(whoami) != root ]]; then echo "You must run this script as root" >&2; exit 1; fi
Volat
adduser jenom tehdy, pokud uživatel neexistuje, aby ses vyhnul neustálému selhávání a logování chyby. Ke zjištění, zda uživatel existuje se dá použít návratový kód příkazu
getent passwdif ! getent passwd -- "$user" >/dev/null; then ... fi
Mohl bys lépe parsovat parametry scriptu a případně vypisovat help.
http://wiki.bash-hackers.org/scripting/posparamsHodně zdaru!