我正在尝试为SVN写一个post-commit钩子,它托管在我们的开发服务器上。我的目标是尝试将提交项目的副本自动 checkout 到服务器上托管该项目的目录。但是,我需要能够读取传递给脚本的目录字符串中的最后一个目录,以便 checkout 到我们的项目所在的同一个子目录。
例如,如果我向项目“example”提交一个SVN,我的脚本会获取“/usr/local/svn/repos/example”作为它的第一个参数.我需要从字符串的末尾去掉“example”,然后用另一个字符串连接它,这样我就可以 checkout 到“/server/root/example”,并立即看到更改。
5条答案
按热度按时间oxf4rvwz1#
basename
会删除路径的目录前缀:rfbsl7qr2#
以下方法可用于获取路径名的任何路径:
输出:
uklbhaso3#
Bash可以获取路径的最后一部分,而无需调用外部
basename
:这使用了Bash的参数扩展来移除最后一个(剩余的)斜杠之前的字符串部分。
41zrol4v4#
若要在不使用外部命令的情况下打印文件名,
运行:
此命令的运行速度必须比
basename
和dirname
快。lmyy7pcs5#
如果文件在当前目录中,您将邀请此短:
我已经有了这个sed命令,尽管我承认它不是很实用: