Script ¿Que hago mal?

pues aver resulta que tengo que hacer un script que cree dentro de un directorio anterior al que esta un fichero de nombre igual a la fecha actual y que contenga el listado recursivo de todos los ficheros y subdirectorios. yo lo hago de la siguiente manera.

vi ejer5.sh

#!/bin/bash
VAR=$('date+%d%m%y')
tpuch /root/scripts/$VAR
ls -la >> $VAR

le doy los permisos con chmod -x ejer5.sh

y al ejecutarlo, me dice que no encuentra el comando.

Porque puede ser? o es que esta mal hecho. venga garcias de antemano.
Escrito originalmente por daniel_5

Porque puede ser? o es que esta mal hecho. venga garcias de antemano.


Basicamente porque esta linea es un asco:
VAR=$('date+%d%m%y')

Debe ir con comillas invertidas.

La version correcta del script es la siguiente:


#!/bin/bash

cd ..  #dices que debia pararse en el anterior no? ;)

VAR=`date +%d-%m-%y`

touch /root/scripts/$VAR

ls -laR >> /root/scripts/$VAR



Luego le das los permisos de ejecucion con:

chmod u+x ejer5.sh

y luego para ejecutarlo:

./ejer5.sh

salu2[bye]
Pues muchas gracias, ya he conseguido que vaya, pero no haciendo lo de las comas, lo unico que he hecho es ponerle un espacio entre el primer parentesis y la primera coma quedando asi: VAR=$( '+%d%m%y') venga gracias otra vez hasta otra

mmm porque dices que es un asco esto?

Basicamente porque esta linea es un asco:
VAR=$('date+%d%m%y')
Escrito originalmente por daniel_5
mmm porque dices que es un asco esto?

Basicamente porque esta linea es un asco:
VAR=$('date+%d%m%y')


Basicamente por que hacer un $('xxxxx') es una redundancia, ya que las comillas invertidas (``) hacen ese trabajo. ;) Ademas te faltaban meter espacios y un separador en la fecha.
Pero lo decia en broma no te ofendas! [+risas]

El bash como lenguaje es muy p***, hay que tratar de ser lo mas prolijo posible sino te puedes pasar horas tratando de encontrar el maldito error. (que quiza no es un error sino un p*** espacio de menos o un corchete sin dejar espacio[+risas])

salu2[bye]

PD: si quieres debuguear con bash usa "#!/bin/bash -x" esta muy bueno cuando buscas errores en scripts largos. ;)
Que va tranki si no me he ofendido, solo lo preguntaba por curiosidad, eske es los ejercicios ke nos mandan, jeje asi aprendo mas si pregunto las cosas como lo delas comas invertidas, bueno pues lo dicho gracias de nuevo. hasta otra
Escrito originalmente por daniel_5
que cree dentro de un directorio anterior


Donde te hace eso el script?
me confundi, solo tenia que crear el archivo en el directorio en el que se encuentra el script. De todas formas seria poniendo touch /root/$VAR en vez de touch /root/scripts/$VAR
no? estando el archivo en touch /root/scripts/$VAR venga hasta otra
Escrito originalmente por daniel_5
me confundi, solo tenia que crear el archivo en el directorio en el que se encuentra el script. De todas formas seria poniendo touch /root/$VAR en vez de touch /root/scripts/$VAR
no? estando el archivo en touch /root/scripts/$VAR venga hasta otra




si hiceses touch ../$var seria mas correcto puesto q asi crearias el archivo indiferentemente del directorio donde te encontraras puesto q haciendolo como dices tu "siempre" te crearia el archivo en el directorio /root/scripts/

me he explicado?
Ok es otra opcion, ya lo sabia pero de todas formas gracias, el tema es ke lo tengo que crear en un directorio del directorio de conexion, en mi caso ese /root/scripts venga gracias hasta otra.
8 respuestas