我想自动将提交的文件从svn存储库复制到具有相同名称的某个文件夹。
例如,我有svn repository /svn/project1
,在提交后它应该将所有文件都放到/www/project1
。
我有一个简单的post-commit钩子脚本,但无法理解如何获取必要目录(project1
)的一部分:
#!/bin/sh
PROJECTNAME= # how get it?
rm -rf /www/$PROJECTNAME
mkdir /www/$PROJECTNAME
/usr/bin/svn export --force file:///svn/$PROJECTNAME/trunk /www/$PROJECTNAME
答案 0 :(得分:3)
您可以使用Bash参数扩展:
PROJECTNAME=${PWD##*/}
要获取父目录,需要两个步骤:
PROJECTNAME=${PWD%/*}
PROJECTNAME=${PROJECTNAME##*/}
答案 1 :(得分:1)
试试这个:
echo $PWD | awk -vFS=/ '{printf "%s",$NF}'
对于我提出的所有测试用例,除了/
目录外,还打印某些内容。所以这对/
不起作用。 (但这并不是你想要做的事情。)
如果这似乎对您有用,请在您的脚本中尝试:
PROJECTNAME=$(echo $PWD | awk -vFS=/ '{printf "%s",$NF}')