如何编写一个 bash 函数来查找特定的父目录。这是我的设置:
/home/user/dev/project1/branch1/deeply/nested/module/structure
用于开发人员的应用程序服务器位于:
/home/user/dev/project1/branch1/apps/someappserver
我想要一个 bash 函数,它递归地上升到分支的根目录,以快速将编译的模块复制到应用程序服务器、运行/停止应用程序服务器、调用特定的 Maven 目标等。
有任何想法吗?每个分支都有一个maven pom.xml,其中包含有关版本的准确信息
答案1
怎么样:
find_branch_root () {
cwd=$PWD
while [ ! -e "$cwd/pom.xml" ] && [ "x$cwd" != x/ ]; do
cwd=`dirname "$cwd"`
done
echo "$cwd"
}
从路径中剥离目录,直到到达根 (/) 或找到“pom.xml”。
答案2
创建一个导出的环境变量,其名称类似于 ,PRJDIR
其值类似于/home/user/dev/project1
。这个环境变量可以很容易地被其他脚本引用,如下所示:
stop-app
cp ${PRJDIR}/modules/* modules/*
start-app
答案3
也许是一个while
循环,cd ..
除非/直到找到合适的文件或目录,然后cd
进入新的目录结构,将您置于正确的位置?那不行吗?