Pregunta

Estoy escribiendo un script bash y desea cambiar a otro usuario, CD en un directorio especificado por MYDIR de los usuarios bash_profile y mostrar el contenido.

Actualmente tengo:

read username
su - app${username} -c ls $MYDIR

La salida no es nada, mi primera suposición es que se trata de un problema de lectura de $ MYDIR de los usuarios de perfil como haciendo funciona bien manualmente por ejemplo.

#su - appadmin
#ls $MYDIR
¿Fue útil?

Solución

Es necesario citar el comando a ejecutar.

En el momento de la cáscara está reemplazando $MYDIR con el valor del entorno de la persona que llama. Además, sólo -c pasa a la siguiente arg a ser ejecutado, es decir, sin la ls $MYDIR - es necesario poner comillas alrededor de todo el comando a distancia:

su - app${username} -c 'ls $MYDIR'

Otros consejos

Cambiar $MYDIR a ${MYDIR:?}. Esto provocará un error si no se establece MYDIR. Es posible que usted no está exportando la variable en el perfil, por lo que se trabaja en la línea de comandos, pero no la secuencia de comandos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top