如何在 Bash sftp 连接尝试结束时放置 heredoc?

How do I place a heredoc at the end of a Bash sftp connection attempt?

正在尝试让这段代码正常工作。我想在中断和退出 shell 之前尝试 3 次 SFTP 连接。问题是有一个 heredoc 并且 sftp 在连接成功时没有将 heredoc 作为输入; shell 变成了我不想要的交互式。

count=0; until sftp -o StrictHostKeyChecking=no -i $key $server ; do ((count++)); [[ $count -eq 3 ]] && echo $count && break && exit 64; done; <<END
get docs/*
quit
END

我根本不会这样写(考虑 lftp 而不是 sftp),但是:

count=0
until sftp -o StrictHostKeyChecking=no -i "$key" "$server" <<END
get docs/*
quit
END
do
  if (( count++ >= 3 )); then echo "$count failures" >&2; exit 64; fi
END

只需确保 commands.txt 包含您的命令,每行一个。

count=0
until sftp -o StrictHostKeyChecking=no -i "$key" -b commands.txt "$server"
do
    ((count++))
    [[ $count -eq 3 ]] && echo $count && exit 64
done