我正尝试对我的存储库中的子模块的子集运行一些操作。我发现这样做的方法应该是使用git子模块foreach,然后添加一个自定义的bash命令。这是我尝试运行的代码:
git submodule foreach \
'
echo $sm_path
if [[ $sm_path = my_submodule_name* ]] ; then
echo found submodule starting with my_submodule_name
fi
'
问题是它给了我一个语法错误,尽管bash语法应该是正确的。我尝试在git submodule foreach
之后添加bash -c
。这似乎解决了语法错误,但我不再得到应该包含子模块路径($sm_path)的变量。
这看起来像是鸡和蛋的问题。有什么建议可以让它运行吗?
谢谢
2条答案
按热度按时间nmpmafwu1#
有些发行版的默认脚本shell采用了老派的错误。例如,Debian从bash切换到dash已经有一段时间了,所以它的所有孩子可能也都有了。1970年以来甚至可以在shell上工作的语法是
4xrmg8kj2#
如果你的
/bin/sh
不是Bash,不要使用bashisms。使用[ x = y ]
而不是[[ x = y ]]
进行比较。要在开始时测试子字符串,请使用grep
:要使用Bash,请使用以下语法: