如何获取脚本所在的补丁的一部分?

时间:2012-07-04 01:13:35

标签: bash svn

我想自动将提交的文件从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

2 个答案:

答案 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}')