我创建了一个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输出并应用一些过滤器吗?以管道为例,我只想知道传输是否成功完成。

最佳答案

可以捕获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

关于linux - 在bash中使用EOF获取FOR的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39705806/

10-11 23:09
查看更多