SFTP 脚本之后 Bash 命令不起作用

SFTP 脚本之后 Bash 命令不起作用

我有以下 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 serverby替换-,因为后者表示 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

相关内容