cp lanzado desde los resultados del código en no puede stat '/ tmp / somedir' funciona en shell

Estoy trabajando para hacer que algunos guiones sean más elegantes al implementarlos en una aplicación x real, etc …

En algún punto de las secuencias de commands, básicamente queremos tomar todo desde un dispositivo de almacenamiento extraíble montado, y copyrlo en la carpeta especificada en una carpeta de trabajo tmp. Cuando se ejecuta en el shell funciona sin problemas. Cuando se ejecuta desde el código, falla.

Copiar command:

cp -avfr /tmp/mnt221234jk/* /tmp/mnt23255/disk1/ 

y el error que obtengo de la aplicación nativa es:

 cp: cannot stat: '/tmp/mnt221234jk/*' file not found. 

La parte extraña es que está absolutamente allí, tiene los permissions apropiados para el usuario que ejecuta la aplicación, etc. Puedo tanto stat /tmp/mnt221234jk/* y ejecutar el command cp desde el shell y ambos funcionan bien.

Además de esto, si omito el /* del origen de la copy del file, funciona, pero crea una nueva carpeta en el destino con el nombre mnt221234jk que no es lo que estoy buscando.

Un par de notas secundarias: mi código para ejecutar commands de shell funciona absolutamente, y funciona bien. Pero muy bien puede ser algo funky sobre la necesidad de paths de trabajo o algo así.

¿Fallar al stat basado en el error de file no existente suena cualquier campanas con alguien?

Estaría dispuesto a tratar de lograr esto de otra manera si hay commands de shell alternativos para copyr efectivamente una estructura de files recursivamente con permissions, etc.

Solutions Collecting From Web of "cp lanzado desde los resultados del código en no puede stat '/ tmp / somedir' funciona en shell"

La llamada en el guión en la que está teniendo el problema no está englobando los files, pero el intérprete de commands sí. No tengo muy claro cómo lo llamas, pero necesitarás encontrar la forma de agrupar o recorrer los files.

Bueno, me disculpo de antemano, el problema real en realidad era bastante simple … era un problema con los files globbing, pero no porque mi caparazón había deshabilitado explícitamente, o ruta relativa.

Estaba lanzando "scripts de shell" y commands de shell, pero fuera del context de bash / sh / tcsh, etc. Ejecutar cp directamente va a ser problemático en la medida de lo posible.

Ejecutando

 /bin/bash -c "cp /blah/* /someotherdir/" 

funcionó fantásticamente ¡Aprecia las pistas!

Hay un error en tu script. No podemos decir dónde porque no ha mostrado su script.

Dada su descripción limitada, parece que el shell no expande /tmp/mnt221234jk/* a una list de files, aunque el command cp , que se ejecuta con los mismos privilegios, puede atravesar el directory. Entonces, una posible explicación es que ha desactivado el globbing con set -f o ha set -o noglob en algún momento. Vuelva a encenderlo con set +f .