我有一个Python函数,fooPy()返回一些值.(int/double或string)
我想使用此值并将其分配给shell脚本.例如以下是python函数:
def fooPy():
return "some string"
#return 10 .. alternatively, it can be an int
fooPy()
Run Code Online (Sandbox Code Playgroud)
在shell脚本中,我尝试了以下内容,但它们都不起作用.
fooShell = python fooPy.py
#fooShell = $(python fooPy.py)
#fooShell = echo "$(python fooPy.py)"
Run Code Online (Sandbox Code Playgroud) 在VS2010解决方案(不是.NET)中,我希望将svn修订版号作为应用程序版本的一部分.
我们目前不使用makefile,只有VS解决方案/项目设置.
我想在编译时获取工作副本修订号,将其存储到变量中,以便稍后可以在代码中使用它来显示版本号.
到目前为止,我已经成功地svnversion将最新版本的工作副本作为预建事件获取.
"C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
Run Code Online (Sandbox Code Playgroud)
在构建时,我可以看到正确的修订号返回到output控制台.
现在,问题是,如何将此值存储到可在代码中使用的变量中?
我已经尝试定义一个预编译变量(_SVNREV)并使用它直接从pre-build事件框保存上面cmd的结果,但这不起作用.
_SVNREV="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
%_SVNREV%="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
%_SVNREV="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
$(_SVNREV)="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.
解决方案:我无法尝试从VS env中更新变量.所以我采用了另一种方法,将脚本称为预构建步骤,获取工作副本的svn修订版,然后创建包含该信息的头文件.
这是svnrev.bat对任何感兴趣的人:
@echo off
set cmd="C:\"Program Files\CollabNet\Subversion Client"\svnversion.exe -n %1 "
set versionfile=%1/version.h
FOR /F %%i IN ('%cmd%') DO SET SVNVER=%%i
echo Detected program revision %SVNVER% in %1
echo #pragma once > %versionfile% …Run Code Online (Sandbox Code Playgroud)