Tente algo assim:
SLAPD='/usr/bin/slapd'
SERVICE='ldap://localhost:10389 ldaps://solsrv02.internal.vbox:10689 ldaps://solsrv02.prod.internal.vbox:10689'
SLAPDARGS="-u '${LDAPUSR}'"
SLAPDARGS+=" -g '${LDAPGRP}'"
SLAPDARGS+=" -h '${SERVICE}'"
SLAPDARGS+=" -F '${CONFDIR}'"
$SLAPD $SLAPDARGS
Para que você possa ver o que isso faz (quando executado depois que $LDAPUSR
, $LDAPGRP
e $CONFDIR
foram definidos adequadamente):
$ echo $SLAPD $SLAPDARGS
/usr/bin/slapd -u 'ldap' -g 'ldap' -h 'ldap://localhost:10389 ldaps://solsrv02.internal.vbox:10689 ldaps://solsrv02.prod.internal.vbox:10689' -F '/etc/ldap'
Se o seu shell não for compatível com +=
, use algo assim:
SLAPDARGS="-u '${LDAPUSR}'"
SLAPDARGS="${SLAPDARGS} -g '${LDAPGRP}'"
SLAPDARGS="${SLAPDARGS} -h '${SERVICE}'"
SLAPDARGS="${SLAPDARGS} -F '${CONFDIR}'"
A chave é usar aspas simples quando você NÃO quer interpolação e expansão global, etc, e nenhuma aspas ou aspas duplas quando você quiser. Por exemplo, você NÃO deseja nenhuma aspas em torno de $SLAPDARGS
quando estiver usando na linha de comando que executa $SLAPD
, caso contrário, elas serão passadas como um único argumento para slapd
.
Outra alternativa é usar uma matriz para SLAPDARGS em vez de uma string simples.
BTW, se você quiser manter os comprimentos de linha de script abaixo de 80 colunas, $SERVICE
pode ser incrementado da mesma forma que $SLAPDARGS
foi - e também pode ser definido como uma matriz em vez de uma string simples.