我正在尝试编写一个简单的函数,它允许我以交互方式取消Git中的文件。这是我到目前为止所做的:
reset_or_keep () {
echo "Received $1"
}
interactive_reset () {
local mods=
mods=`git status --porcelain | sed -e "s/^[A-Z][ \t]*//g" | xargs reset_or_keep`
}
但是,我收到此错误:
xargs: reset_or_keep: No such file or directory
我希望对git status --porcelain
答案 0 :(得分:3)
最简单的方法是使用xargs
直接在bash中重新实现read
:
#!/bin/sh
reset_or_keep () {
echo "Received $1"
}
handle_files() {
while read filename ; do
reset_or_keep "$filename"
done
}
git status --porcelain | sed -e "s/^[ \t]*[A-Z][ \t]*//g" | handle_files
(请注意,我必须对您的sed
表达式进行一些小改动,以处理来自git status
的输出格式。)
请注意,与没有xargs
标志的-0
一样,此程序无法正常使用包含空格的文件名。