Svn 在一行中使用两次xargs修复subversion«»;地位

Svn 在一行中使用两次xargs修复subversion«»;地位,svn,shell,status,xargs,Svn,Shell,Status,Xargs,我在这里找到了解决问题的最佳方案: 但现在,我只想写一个小脚本来实现这一点 像这样: svn status | grep '\!' | awk '{print $2}' | xargs svn revert svn status | grep '\!' | awk '{print $2}' | xargs svn delete 但是在一行 因为在svn恢复后,“svn状态| grep'!”不会返回任何结果。理性的 我想我找到了一个解决办法:但我对英语有点生疏,命令行不是我的强项 svn st

我在这里找到了解决问题的最佳方案:

但现在,我只想写一个小脚本来实现这一点

像这样:

svn status | grep '\!' | awk '{print $2}' | xargs svn revert

svn status | grep '\!' | awk '{print $2}' | xargs svn delete
但是在一行

因为在svn恢复后,“svn状态| grep'!”不会返回任何结果。理性的

我想我找到了一个解决办法:但我对英语有点生疏,命令行不是我的强项

svn status | grep '\!' | awk '{print $2}' | tee list.$$ | xargs svn revert
xargs svn delete < list.$$
rm list.$$
还有其他一些技巧可以尝试,但至少其中一些不能保证顺序操作。例如,
bash
中的进程替换:

svn status | grep '\!' | awk '{print $2}' | tee >(xargs svn revert) | xargs svn delete

每个文件都将被还原和删除,但顺序是不可预测的。

两个命令都在一行中。注意xargs的完全丢失。并不是说xargs不好,只是这里不需要它

x="$(svn status | grep '\!' | awk '{print $2}')"; svn revert "$x" && svn delete "$x" || echo "no svn delete $?" x=“$(svn状态| grep'\!'| awk'{print$2}”);svn恢复“$x”&&svn删除“$x”| |回显“无svn删除$?”
请注意,如果svn还原失败,则不会运行svn delete。“no svn delete”表示其中一个svn命令失败

可以很好地使用陷阱。只是还原目录时出现了一些错误,但svn删除后仍能正常工作。非常感谢你。 x="$(svn status | grep '\!' | awk '{print $2}')"; svn revert "$x" && svn delete "$x" || echo "no svn delete $?"