невозможно создать удаленный каталог с именем даты - PullRequest
2 голосов
/ 10 марта 2011

Что я делаю не так с этим сценарием оболочки?Я хочу создать каталог удаленно, назвав его отметкой даты.

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

Вывод: (он говорит, что каталог существует, но его нет)

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

Сервер: (обратите внимание, что он создает файл, а не каталог)

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

Ответы [ 2 ]

4 голосов
/ 10 марта 2011

Я думаю, что проблема в кавычках "'" вокруг "mkdir $ TGTDIR".Переменная не раскрывается, если она заключена в одинарные кавычки.Поэтому вы должны попробовать

/usr/bin/ssh -p 1234 -i $KEYFILE foo@$1 "mkdir $TGTDIR"
0 голосов
/ 10 марта 2011

mkdir: не удается создать каталог `$ TGTDIR ': файл существует, это означает, что файл уже существует, если вы выполняете один и тот же сценарий несколько раз, когда он пытается создать файл с тем же именем, после создания файла он не перезаписывает его, выдает File Exists,

USe Условие там

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

или, если вы хотите создать несколько раз, добавьте час, минуты и секунды к DIRDATE= date '+% Y% m% d-% H-% M-% S '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...