error: operador inesperado
Frecuentes
Visto 618 veces
0
test `find /mnt/backups/mysql/information_schema-20120521-*.sql -type f -mmin -1500`
Estoy tratando de verificar la antigüedad de un archivo, pero obtengo errores de "operador unario esperado" y "operador inesperado" según bash / sh utilizado en el script.
¿Cómo puedo evitarlo?
Si no uso el comodín "*", entonces todo funciona bien, pero tengo que usarlo.
2 Respuestas
1
lo intentaré
find /mnt/backups/mysql/ -name "information_schema-20120521-*.sql" -type f -mmin -1500
Y quizás agregue --max depth si solo desea archivos justo debajo de /mnt/backups/mysql/
contestado el 21 de mayo de 12 a las 12:05
Si ! prueba find '$DIR/$db-$date-*.sql' -type f -mmin -1500
Funciona bien solo pero con variables no funciona. find: `$DIR/$db-$date-*.sql': No existe tal archivo o directorio - user553076
Funciona bien solo pero con variables no funciona. #!/bin/bash fecha=date +%Y%m%d
RESULTADO=0 ARCHIVO=/tmp/mysqlstatus DBS="$(mysql -Bse 'mostrar bases de datos')" DIR=/mnt/backups/mysql for db en $DBS do if ! prueba find '$DIR/$db-$date-*.sql' -type f -mmin -1500
entonces RESULTADO=$(($RESULTADO + 1)) fi hecho echo $RESULTADO > $ARCHIVO - user553076
Utilice {}: $DIR/${db}-${fecha}-*.sql' - Eran Ben-Natan
0
Trate de citar el argumento, tal cual comodines para find
parecen causar problemas con bash:
test `find '/mnt/backups/mysql/information_schema-20120521-*.sql' -type f -mmin -1500`
contestado el 21 de mayo de 12 a las 12:05
funciona bien solo pero nuevamente con variable no funciona. - user553076
Intenta usar comillas dobles: find "/mnt/...$VAR...sql"...
- Alejandro Pavlov
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas bash or haz tu propia pregunta.
Parece que find devuelve más de un nombre de archivo. - mouviciel
¿Qué estás intentando lograr?
test
espera un único argumento de cadena si no especifica un operador. Por otro lado,find
por sí mismo es bastante capaz de informar si encontró algún archivo, si eso es lo que está tratando de averiguar. - tripleeeparece que te has perdido un punto oscuro sobre el uso
find
. El primer argumento debe ser una ruta, no una especificación de archivo. algo que termina con*.sql
es una especificación de archivo. En sus comentarios a continuación, sigue refiriéndose a las variables. Quieres decir...*.sql
OR y env var, como $VAR. Si te refieres a $VAR, no puede estar entre comillas simples, ya que las comillas s impiden la expansión variable. O no hay comillas o la solución preferida es usar comillas dobles, es decir"$VAR"
. Buena suerte. - shellter