检查Git存储库中是否存在文件夹…testingbash中是否存在以NULL作为分隔符的子string

我有一个用于几个项目的普通git“post-receive”脚本,如果根目录中存在/ app /或/ public /文件夹,它需要执行不同的操作。

使用:

FOLDERS=`git ls-tree -d --name-only -z master`; 

我可以看到目录列表,我想在bash中使用RegExp支持来运行如下所示的内容:

 if [[ "$FOLDERS" =~ app ]]; then ... fi 

但是,如果有像“ 应用程序 ”文件夹那样的话,那么这将不起作用…我在git“ls-tree”命令中指定了“-z”选项,所以我可以使用\ 0(空)字符作为分隔符,但不知道如何testing在bash RegExp。

同样,我知道支持在ls-tree命令中指定一个特定的path,然后可以将其转换为“wc -l”,但是我认为获得完整的根目录列表(不是recursion),然后用返回的输出testing2(或更多)文件夹。

可能涉及到: https : //stackoverflow.com/questions/7938094/git-how-to-check-which-files-exist-and-their-content-in-a-shared-bare-repos

它看起来像空字符丢失(或忽略),就好像列表中包含“app”和“httpd”,它将匹配string“apphttpd”。

所以我已经多次调用“git ls-tree”来查看每个单独的文件是否存在。

 if [ `git ls-tree -d --name-only master "$F" | wc -l` -eq 1 ]; then fi