while IFS='=' read -r key values; do read -ra values <<< "$values" case $key in Requires|OnFailure) # only add hard dependencies (not Wants) map add_systemd_unit "${values[@]}" ;; Exec*) # do not add binaries unless they are required, # strip special executable prefixes case ${values[0]} in -*) ;; !!*) add_binary "${values[0]#!!}" ;; *) add_binary "${values[0]#[@!:+]}" ;; esac ;; esac done <"$unit"