我有一个这样的示例代码:
CMD="svn up blablabla | grep -v .tgz"
echo $CMD | xargs -n -P ${PARALLEL:=20} -- bash -c
目的是并行运行svn update。但是当遇到冲突时,应该提示用户选择多个选项,它只是在不等待用户输入的情况下通过。并显示错误:
Conflict discovered in 'blablabla'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: svn: Can't read stdin: End of file found
有什么方法可以解决这个问题吗?
由于
答案 0 :(得分:0)
是的,有办法解决这个问题!请参阅how to prompt a user from a script run with xargs的答案。长话短说,使用
xargs -a FILENAME your_script
或
xargs -a <(cat FILENAME) your_script
第一个版本实际上从文件中读取行,第二个版本从文件中读取行,这便于在带有awk或perl的管道链中使用xargs。如果你不想在空白处打破,请记住使用-0标志!