tar: "No se puede stat" cuando se presentan argumentos como variables de shell


1

Tengo algunos directorios en una ubicación, la ruta absoluta de esa ubicación se almacena PROJECT_HOME. Ahora, estoy tratando de hacer lo siguiente en un script:

TARGET_LIST="bin lib scripts deployment"
tar -czf project.tar.gz -C "$PROJECT_HOME" "$TARGET_LIST"

pero el alquitrán me da lo siguiente:

tar: bin lib scripts deployment: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors

El comando tar funciona si sustituyo los valores de TARGET_LIST( tar -czf project.tar.gz -C "$PROJECT_HOME" lib bin scripts deployment), pero no cuando uso la variable.

¿Qué estoy haciendo mal?

Respuestas:


1

Al poner $TARGET_LISTentre comillas, está definiendo un argumento único con espacios. tar está buscando un solo archivo / carpeta llamado 'despliegue de scripts bin lib'.

Probar con

tar -czf project.tar.gz -C $PROJECT_HOME $TARGET_LIST

sin las comillas

EDITAR Si tiene espacios en los nombres de archivo o directorio, debe usar matrices (como lo sugiere Ignacio)

Ejemplo

TARGET_LIST=(bin lib scripts deployment "a directory with spaces")
tar -czf project.tar.gz -C $PROJECT_HOME "${TARGET_LIST[@]}"

@Saadat: solo hasta que golpees algo con espacios en blanco.
Ignacio Vazquez-Abrams

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.