#!/bin/bash
while read server <&3; do   #read server names into the while loop    
  if [[ ! $server =~ [^[:space:]] ]] ; then  #empty line exception
    continue
  fi   
  echo "Connecting to - $server"
  #ssh "$server"  #SSH login
  while read updatedfile <&3 && read oldfile <&4; do     
    echo Comparing $updatedfile with $oldfile
    if diff "$updatedfile" "$oldfile" >/dev/null ; then
      echo The files compared are the same. No changes were made.
    else
      echo The files compared are different.
      # copy the new file and put it in the right location
      # make a back up of the old file and put in right location (time stamp)
      # rm the old file (not the back up)
      #cp -f -v $newfile

      # ****************************
      mv $oldfile /home/u0146121/backupfiles/$oldfile_$(date +%F-%T)
      # ****************************
    fi 
  done 3</home/u0146121/test/newfiles.txt 4</home/u0146121/test/oldfiles.txt
done 3</home/u0146121/test/servers.txt

La línea entre * es donde estoy teniendo problemas con mi script. Se generará el archivo con la fecha y nombre de archivo. Sólo se utiliza la fecha. Yo quiero hacer tanto.

InformationsquelleAutor mkrouse | 2013-07-11

1 Comentario

  1. 7

    Los nombres de las variables pueden contener caracteres de subrayado, de modo que usted no puede tener subraya inmediatamente después de desnudo los nombres de las variables. En el caso de que usted está utilizando una (indefinido) variable $oldfile_ en el nombre de archivo de destino, de modo que el nuevo nombre es construido como «cadena vacía + fecha». Poner el nombre de la variable entre corchetes

    mv $oldfile /home/u0146121/backupfiles/${oldfile}_$(date +%F-%T)

    y el cambio de nombre debería funcionar como se esperaba.

Dejar respuesta

Please enter your comment!
Please enter your name here