我已经创建了一个bash脚本来临时帮助我根据提交的ID将一些文件发送到FTP服务器,我得到最后一次提交,跟踪文件并发送如下所示。
#!/bin/bash
commit_hash=$(git log --format="%H" -n 1)
[[ -z "$1" ]] || commit_hash=$1
files=$(git diff-tree --no-commit-id --name-only -r $commit_hash)
echo -e $(git log -1 $commit_hash --pretty=format:"%h - %an, %ar : %s");
printf "\n"
HOST=
USER=
PASS=
for file in $files; do
ftp -nv $HOST << EOF
user $USER $PASS
cd /www/example
passive
put $file
bye
EOF
done;
当然这不是最好的方法,但我自动化了一些我目前正在处理的事情。
可以捕获heredoc的ftp输出并应用一些过滤器吗?以管道为例,我只想知道转移是否成功完成。
答案 0 :(得分:1)
可以捕获heredoc的ftp输出并应用一些过滤器吗?以管道为例,我只想知道转移是否成功完成。
我认为你的意思是你想要捕获其输入从heredoc重定向的ftp
命令的输出; heredoc本身没有输出,除了相关命令之外的任何东西都可以看到。
但您可以重定向命令的输出。要记住的是,heredoc从下一行开始,而不是在关联的重定向运算符之后立即开始。因此,您可以在heredoc运算符之后将管道添加到另一个命令。例如:
$ cat << EOF | grep flag
flag this line
not this line
or this line
flag this
last flag
EOF
输出:
flag this line
flag this
last flag
答案 1 :(得分:1)
请勿使用retry count
循环。请参阅Bash FAQ 001。
last number