Hola a todos, estoy haciendo un script para hacer backup de archivos con una extensión especifica. Se debe escoger un medio para crear la carpeta del backup. Estoy usando find y exec, sin embargo cuando ejecuto me aparece el find: falta un parámetro para «-exec», si pongo un echo para la variable que ejecutaría la opción y copio el comando se ejecuta sin problema. Ayuda para que se ejecute solo por favor
Esto pasa cuando pongo que se ejecute la variable tipoo
![](http://i58.tinypic.com/10qgmu1.png)
Poniendo echo y ejecutando:
![](http://i59.tinypic.com/vxg7dh.jpg)
Código (bash) [Seleccionar]
#! /bin/bash
function donde()
{
local ubic
echo "1. disco"
echo "2. memoria"
read -p "donde desea guardar el backup " ubic
case $ubic in
[1-2])
return $ubic;;
*)
echo "valor no valido"
donde
esac
}
function que()
{
local tipo
echo "1. .doc"
echo "2. .txt"
echo "3. .pdf"
echo "4. .c"
echo "5. .sh"
read -p "a que tipo de archivo " tipo
case $tipo in
[1-5])
return $tipo;;
*)
echo "valor no valido"
que
esac
}
donde
ubic=$?
case $ubic in
1)
ubi='-d /home/sdii/Documentos/backup'
ubic="mkdir /home/sdii/Documentos/backup"
ubicc='/home/sdii/Documentos/backup/ \;';;
*)
ubi='-d /media/sdii/F26258CF62589A65/backup'
ubic='mkdir /media/sdii/F26258CF62589A65/backup'
ubicc="/media/sdii/F26258CF62589A65/backup/ \;"
esac
que
tipo=$?
case $tipo in
1)
tipo='sudo find /home -iname "*.docx" -exec cp {} '
tipoo=$tipo$ubicc;;
2)
tipo='sudo find /home -iname "*.txt" -exec cp {} '
tipoo=$tipo$ubicc;;
3)
tipo='sudo find /home -iname "*.pdf" -exec cp {} '
tipoo=$tipo$ubicc;;
4)
tipo='sudo find /home -iname "*.c" -exec cp {} '
tipoo=$tipo$ubicc;;
*)
tipo='sudo find /home -iname "*.sh" -exec cp {} '
tipoo=$tipo$ubicc
esac
if [ $ubi ]
then
$tipoo
else
$ubic
$tipoo
fi
Esto pasa cuando pongo que se ejecute la variable tipoo
![](http://i58.tinypic.com/10qgmu1.png)
Poniendo echo y ejecutando:
![](http://i59.tinypic.com/vxg7dh.jpg)