Pagina 1 di 1

Shell

Inviato: martedì 15 luglio 2014, 14:27
da ste8604
ciao,
sto provando a creare una shell schedulata che mi crei il backup dei repository SVN.
questa la schell:

Codice: Seleziona tutto

#!/bin/bash
DIR=/volume1/myBackup/svn/
LOG_FILE=${DIR}dump.log
DATESTAMP=$(date +%Y%m%d%H%M%S)
REPOSITORY_NAMES= ( rep rep2 )

for var in "${REPOSITORY_NAMES[@]}"
do
	echo $var >> ${LOG_FILE}
	FILENAME=${DIR}repo-$var-${DATESTAMP}.gz
        svnadmin dump $var > ${FILENAME}	
done
il problema è che si rompe nella creazione dell'array ("REPOSITORY_NAMES= ( rep rep2 )"), come se la shell non lo supportasse, perché?
su linux sembra funzionare.

grazie

Re: Shell

Inviato: martedì 15 luglio 2014, 17:32
da burghy86
lo spazio?

Re: Shell

Inviato: martedì 15 luglio 2014, 19:39
da dMajo
Ad occhio e croce direi che ci manca qualche apice("). Ma potrei sbagliarmi visto che sono nuovo del mondo linux ed ancora non ne ho capito tutti i dialetti.
Fai attenzione anche alle parentesi

Io ho tribolato un po' con le varie sintassi a fare questo script http://forum.synology.com/enu/viewtopic ... 26#p310721
lo script viene schedulato dallo schedulatore del dsm(gui) inserendo sh percorso/script.sh come riga di comando e funziona sia su dsm4.3 che 5

Qui il passaggio for (each)/do

Codice: Seleziona tutto

# Check if needed dependencies exists
   Dependencies="chown date grep mv rm sed wget"
   MissingDep=0
   for NeededDep in $Dependencies; do
      if ! hash "$NeededDep" >/dev/null 2>&1; then
         printf "Command not found in PATH: %s\n" "$NeededDep" >&2
         MissingDep=$((MissingDep+1))
      fi
   done
Prova cosi

Codice: Seleziona tutto

#!/bin/bash
DIR="/volume1/myBackup/svn/"
LOG_FILE="${DIR}dump.log"
DATESTAMP=$(date +"%Y%m%d%H%M%S")
REPOSITORY_NAMES="rep rep2"

for var in $REPOSITORY_NAMES
do
   echo ${var} >> ${LOG_FILE}
   FILENAME="${DIR}repo-${var}-${DATESTAMP}.gz"
        svnadmin dump ${var} > ${FILENAME}   
done

Re: Shell

Inviato: martedì 15 luglio 2014, 22:00
da ste8604
ho risolto in questo modo:

Codice: Seleziona tutto

REPOSITORY_NAMES=rep1-rep2
arr=$(echo $REPOSITORY_NAMES | tr "-" "\n")
for rep in $arr
do
    echo $rep 'backup...'
done
grazie dell'aiuto