Estoy trabajando en un script bash para crear una nueva carpeta en/tmp/usando el nombre de un archivo, y luego copio el archivo dentro de esa carpeta.nombre base con espacios en un script bash?
#!/bin/bash
MYBASENAME="`basename $1`"
mkdir "/tmp/$MYBASENAME"
for ARG in "[email protected]"
do
mv "$ARG" "/tmp/$MYBASENAME"
done
Comportamiento:
cuando escribo en mymove "/home/me/downloads/my new file.zip"
que muestra esto:
mkdir /tmp/my
new
file.zip
mv: rename /home/me/downloads/my new file.zip to /tmp/my\nnew\nfile.zip:
Tengo un montón de comillas alrededor de todo, así que no entiendo por qué esto no está funcionando como se esperaba .
Además, tengo el bucle de formulario allí en caso de que haya varios archivos. Quiero que se copien todos en la misma carpeta, según el nombre base del primer argumento.
noté que muchos de los scripts de shell predeterminados usan sh en lugar de bash.Todavía no puedo decir demasiada diferencia, excepto con cosas como 'echo \ c' para evitar que aparezca una nueva línea. gracias por los consejos y la respuesta útil. – cwd
La forma portátil con echo \ c es usar 'printf' donde simplemente omite el' \ n' en la cadena de formato. Los bashisms más frecuentemente utilizados son el uso de variables de matriz, sintaxis no POSIX como '[[...]]' para pruebas, para bucles con 'for ((...))', y la construcción 'select' . – Jens
Esto no funciona con bash enviado en mi león macosx (GNU bash, versión 3.2.48 (1) -lanzamiento (x86_64-apple-darwin11) – rjha94