使用git submodule foreach删除子模块无跟踪分支时awk语法报错
解决Git子模块foreach执行分支清理命令的引号问题
问题根源是git submodule foreach会解析双引号内的$符号,把你awk命令里的$3当成foreach的变量展开,导致传到awk的命令变成了!~/\[/ { print },直接触发语法错误。
给你两种可行的解决方法:
方法一:改用单引号包裹外层命令,转义内层awk的单引号
单引号不会让shell展开内部变量,所以$3能完整传给awk,内层单引号用\'转义即可:git submodule foreach 'git branch -vv | cut -c 3- | awk '\''$3 !~/\[/ { print $1 }'\'' | xargs -r git branch -D'方法二:保留外层双引号,转义awk里的
$符号
把awk命令中的$3和$1前面加反斜杠,让foreach不解析这些变量,留给awk处理:git submodule foreach "git branch -vv | cut -c 3- | awk '\$3 !~/\[/ { print \$1 }' | xargs -r git branch -D"
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

