我想在bash中编写一个shell脚本来从svn存储库中部署网站.当我部署网站时,我将导出的目录命名为website_name -R revision_number.我希望bash脚本自动重命名导出的目录,因此需要从导出目录中学习当前的修订版号.如果我跑
$> svn info http://svn-repository/trunk
Path: trunk
URL: http://svn-repository/mystery/trunk
Repository Root: http://svn-repository/mystery
Repository UUID: b809e6ab-5153-0410-a985-ac99030dffe6
Revision: 624
Node Kind: directory
Last Changed Author: author
Last Changed Rev: 624
Last Changed Date: 2010-02-19 15:48:16 -0500 (Fri, 19 Feb 2010)
Run Code Online (Sandbox Code Playgroud)
字符串后面的数字Revision:是我想要的.如何将其转换为bash变量?我是否对svn info命令的输出进行字符串解析?
Pau*_*lin 26
REVISION=`svn info http://svn-repository/trunk |grep '^Revision:' | sed -e 's/^Revision: //'`
Run Code Online (Sandbox Code Playgroud)
它很简单,如果不优雅的话.
小智 6
解析 'Revision' 字符串不能跨不同语言环境移植。例如。我的语言环境就像:
...
Wersja: 6583
Rodzaj obiektu: katalog
Zlecenie: normalne
Autor ostatniej zmiany: ...
Ostatnio zmieniona wersja: 6583
Data ostatniej zmiany: 2013-03-21 11:33:44 +0100 (czw)
...Run Code Online (Sandbox Code Playgroud)
你不想解析那个:)
因此,最好的方法是使用 oefe 建议的“svnversion”。这是为此目的提到的工具。
只需使用一个awk命令.也简单得多.
var=$(svn info http://svn-repository/trunk | awk '/^Revision:/{print $2}')
Run Code Online (Sandbox Code Playgroud)
不使用 sed、grep 或 awk:
REVISION=`svn info --show-item=revision --no-newline`
Run Code Online (Sandbox Code Playgroud)