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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top