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

时间:2015-10-26 18:45:24

标签: bash sftp

尝试让此代码段正常运行。我想在破坏和退出shell之前尝试SFTP连接3次。问题是,当连接成功时,有一个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

2 个答案:

答案 0 :(得分:3)

我根本不会这样写(考虑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

答案 1 :(得分:1)

确保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