我有以下 bash 脚本
SFTP 工作正常,但回显“备份完成”不起作用
#!/bin/sh
sftp -b /dev/stdin server <<EOF
cd /shares/backup/webserver/
put $bu_PATH$BACKUP_FILE
quit
EOF
echo "Backup done"
有人可以帮忙吗?
答案1
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
by替换-
,因为后者表示 stdin。
答案2
应该是小写的“echo”而不是“Echo”。
答案3
您可能能够通过仅将长字符串回显到命令来稍微改进该过程。您将消除为保存这几行而创建的挂起文件:
#! /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,直到发现另一个匹配的引号。
答案4
#! /bin/sh
printf "%s\n%s\n" "put $bu_PATH$BACKUP_FILE" "quit" | sftp -- user@server:/shares/backup/webserver/
if (( $? )); then
echo "Backup Error."
exit 1
fi
echo 'Backup DONE!'
exit 0
if test $? -ne 0
then
echo Backup Problem
exit 1
fi
echo 'Backup DONE!'
exit 0