Você tem vários problemas aí.
-
Primeiro, você deseja atribuir o resultado do comando
date +%b-%d-%y
à variávelTESTDATE
. Para fazer isso, você precisa usar a substituição de comando :TESTDATE=$(date +%b-%d-%y)
O que seu script está fazendo atualmente é atribuir a string
date +%b-%d-%y
aTESTDATE
, não o resultado do comando. Você pode testar executando isto:TESTDATE="date +%b-%d-%y" echo $TESTDATE
, que imprimirá
date +%b-%d-%y
. -
Segundo, você está usando a substituição de comandos onde você não deveria, o que você quer é:
zipfile="${DEST}/${TESTDATE} ${d} ${BASENAME}.zip"
Então, você não quer os parênteses. Eu também não tenho idéia do que você está tentando fazer com
basename
lá.basename
é um programa padrão e você não precisa colocá-lo em uma variável para usá-lo. O comando acima define zipfile como/volume1/NetBackup/Backup/${TESTDATE} ${d} /usr/bin/basename
, que não é um nome de arquivo válido. Se você explicar o que está tentando fazer com o basename, talvez possa ajudar, mas, como é, não faz sentido. -
Você parece achar que
DIRS
é uma lista, não é, é apenas o diretório único/volume1/NetBackup
. -
Outro ponto é uma questão de estilo. Você deve sempre evitar o uso de nomes de variáveis CAPITAL, pois as variáveis ambientais são todas em maiúsculas e isso pode causar problemas se você usar o mesmo nome.
De qualquer forma, se eu entendo o que você está tentando fazer aqui, você poderia escrever o script assim (eu fiz dirs
em um array já que acho que é o que você queria):
#!/usr/bin/env bash
# date
testdate=$(date +%b-%d-%y)
# dirs to backup
dirs=("/volume1/NetBackup" "/volume1/foobar")
# Save zip file elsewhere on the server
dest="/volume1/NetBackup/Backup"
# set to "no" keep old zip file and add new file
delete_old_zip_files="no"
#Path to binary files
zip=/usr/syno/bin/zip
base=$(/usr/bin/basename ${dest})
echo "bb $base";
for d in ${dirs[@]}
do
## I assume this is what you wanted to do, it will just
## return the name of the current $d directory
base=$(/usr/bin/basename ${d})
zipfile="${dest}/${testdate} ${base}.zip"
echo -n "Creating $d $zipfile..."
# create zip file
${zip} -r $zipfile $d && echo "Done!" || echo ""
done
O script de exemplo acima criaria /volume1/NetBackup/Backup/Mar-05-14 NetBackup.zip
e /volume1/NetBackup/Backup/Mar-05-14 foobar.zip
. A propósito, eu também sugiro strongmente que você evite criar nomes de arquivos com espaços, você me agradecerá mais tarde.