У меня есть следующий сценарий bash
SFTP работает нормально, но эхо «Резервное копирование выполнено» не работает
#!/bin/sh
sftp -b /dev/stdin server <<EOF
cd /shares/backup/webserver/
put $bu_PATH$BACKUP_FILE
quit
EOF
echo "Backup done"
Кто-нибудь может помочь?
EOF не находится в начале строки. Изменение вашего скрипта на:
#!/bin/sh
sftp -b /dev/stdin server <<EOF
cd /shares/backup/webserver/
put $bu_PATH$BACKUP_FILE
quit
EOF
echo "Backup done"
должно заставить его работать.
Вы можете заменить /dev/stdin server
по -
поскольку последний означает стандартный ввод.
Возможно, вам удастся немного улучшить процесс, просто повторив длинную строку в команде. Вы бы удалили висящий файл, созданный для хранения этих нескольких строк:
#! /bin/sh
echo "cd /shares/backup/webserver/
put $bu_PATH$BACKUP_FILE
quit" | sftp -b - server
if test $? -ne 0
then
echo Backup Problem
exit 1
fi
echo 'Backup DONE!'
exit 0
Обратите внимание, что линия эха продолжается по CR, пока не будет обнаружена другая подходящая цитата.
Это должно быть «эхо» в нижнем регистре вместо «Эхо».