我目前正在使用expect脚本将数据从git存储库推送到其他服务器。但我想记录来自远程存储库的错误消息。
这是spawn的以下代码行。
spawn git push --force user@ip:/var/git/repo.git master 2> >(tee /home/user/error.log >&2)
但上面的代码不起作用,它会抛出错误:
error: src refspec 2> does not match any.
error: src refspec >(tee does not match any.
error: src refspec /home/user/error.log does not match any.
error: src refspec >&2) does not match any.
我也尝试过:
$(spawn git push --force user@ip:/var/git/repo.git) > /home/user/output.log
但它仍然无效。
我的主要动机是记录我从远程存储库获取的错误消息,并将它们显示到输出屏幕。
感谢。
编辑1: 当使用“glenn jackman”回答时,它会记录所有内容,回显消息以及错误消息,但我只会记录错误消息。
remote: changing directory to the one which is not available
remote: hooks/post-receive: line 5: cd: someunknown: No such file or directory
答案 0 :(得分:0)
期望不了解bash进程替换语法。如果你需要它,你需要生成bash来执行它:
spawn bash -c {git push --force user@ip:/var/git/repo.git master 2> >(tee /home/user/error.log >&2)}
注意大括号的使用:expect的大括号就像shell的单引号一样:将一些单词组合为一个没有变量或命令插值的单个字符串。