我有以下情况。在詹金斯,我有一个正在不同环境运行的构建。这就是为什么我要使用带有两个选项PROD/TEST
的参数进行构建的原因。该构建正在调用带有参数PROD
或TEST
的Shell脚本。
以下是詹金斯正在调用的脚本A
的示例:
if %1%==TEST(
start F:\test.bat
)
脚本A
本身正在调用另一个脚本-B
。
以下是脚本B
的示例:
copy test.xt copyFolder\
问题在于Jenkins仅调用第一个脚本A
-,而第二个脚本B
无法运行。
为什么会这样?
答案 0 :(得分:1)
您将需要call
而不是start
批处理文件,因为它会创建一个新的cmd.exe
实例,因此它可以异步运行被调用的批处理文件(如jeb { {3}}):
if "%~1" == "TEST" (
call F:\test.bat
)
在这里,我要注意一些事情:
%1%
将被解释为批处理文件的第一个参数 (如果有)和一个额外的百分号({{1 }})。您可能在这里想要第一个参数,所以我用%
代替了%1%
。如果不是您想要的,请用您的变量名替换它,但请记住,它不能以数字开头!%1
被%1
取代并被引用是因为:
%~1
表示第一个不带引号的参数。%~1
语句中引用值始终是最佳做法,但是如果有引号,则比较将失败。if
之间添加了一个空格,目的是使代码更清晰。有关单线的信息,请参见here,它是:
==
有关这些命令的工作方式的更多信息,请参见cmd中的if /I "%~1"=="TEST" (call "F:\test.bat")
和call /?
。