以下在bash中有效,但在zsh中没有,我不确定原因:
user@machine:~/some_git_repo$ for i in $(ls ./conf); do git --no-pager grep $i ; done
zsh shell为./conf
fatal: command line, 'some_file_name.xml': Unmatched [ or [^
答案 0 :(得分:3)
你根本不应该在这里使用命令替换。相反,使用glob - 并查看Why you shouldn't parse the output of ls(1)。
# this works reliably in both bash and zsh
for i in ./conf/*; do git --no-pager grep -F -e "${i##*/}"; done
请注意grep -F
的使用 - 这意味着您的参数被视为文字字符串,而不是正则表达式,因此您不能将文件名视为无效的正则表达式语法。