utente e di uscita interruttore contenuto delle variabili
-
18-09-2019 - |
Domanda
Sto scrivendo uno script bash e si desidera passare a un altro utente, cd in una directory specificata da MYDIR negli utenti bash_profile ed elencare i contenuti.
Attualmente ho:
read username
su - app${username} -c ls $MYDIR
L'uscita è nulla, la mia prima ipotesi è che si tratta di un problema di lettura $ MYDIR da parte degli utenti profilo come farlo manualmente funziona per esempio bene.
#su - appadmin
#ls $MYDIR
Soluzione
È necessario citare il comando da eseguire.
Al momento la shell sostituisce $MYDIR
con il valore dall'ambiente del chiamante. Anche -c
passa solo il prossimo arg da eseguire, vale a dire senza la ls
$MYDIR
- è necessario mettere le virgolette intorno a tutto il comando a distanza:
su - app${username} -c 'ls $MYDIR'
Altri suggerimenti
Cambia $MYDIR
a ${MYDIR:?}
. Ciò causerà un errore se MYDIR non è impostato. E 'possibile che non si sta esportando la variabile nel profilo, è per questo che funziona nella riga di comando, ma non lo script.