impossible de créer un répertoire distant nommé comme date

Que fais-je mal avec ce script shell? Je veux créer un répertoire à distance en le nommant avec un horodatage.

DIRDATE=`date '+%Y%m%d'` BASE=/home/foo KEYFILE=$BASE/.ssh/host_rsa TESTDMPDIR=/home/files TGTDIR=$BASE/$DIRDATE export BASE KEYFILE TESTDMPDIR TGTDIR /usr/bin/ssh -p 1234 -i $KEYFILE foo@$1 'mkdir $TGTDIR' /usr/bin/scp -P 1234 -i $KEYFILE $TESTDMPDIR/*.gz foo@$1:$TGTDIR 

Sortie: (il est dit que le répertoire existe, mais ce n’est pas le cas)

 mkdir: cannot create directory `$TGTDIR': File exists foobar.dat.gz 100% 0 0.0KB/s 00:00 

Serveur: (remarquez, cela crée un fichier et non un répertoire)

 -rw-r--r-- 1 foo users 0 Mar 9 22:13 20110309 

Je pense que le problème sont les guillemets simples “‘” autour de “mkdir $ TGTDIR”. La variable n’est pas développée si elle est entre guillemets simples. Par conséquent, vous devriez essayer

 /usr/bin/ssh -p 1234 -i $KEYFILE foo@$1 "mkdir $TGTDIR" 

mkdir: impossible de créer le répertoire `$ TGTDIR ‘: Le fichier existe, cela signifie que le fichier existe déjà, si vous exécutez le même script plusieurs fois, il essaie de créer un fichier avec le même nom de fichier

USe condition là

 DIRDATE=`date '+%Y%m%d'` BASE=/home/foo KEYFILE=$BASE/.ssh/host_rsa TESTDMPDIR=/home/files TGTDIR=$BASE/$DIRDATE if [ ! -f $TGTDIR ] then create fi 

ou si vous voulez créer plusieurs fois, ajoutez les heures, les minutes et les secondes à DIRDATE= date ‘+% Y% m% d-% H-% M-% S’