在shell中跳转命令

时间:2015-11-13 09:07:07

标签: shell batch-file

我是shell脚本的新手,我的问题非常简单。 在下面的代码中":go_start" excutes直到":setpython" " setpython"执行直到代码末尾的调用函数。



if X == "somthing" goto setpython
:go_start
rem ------------------------------Debug--------------------------------------
IF "%debug%"=="1" (
ECHO SiL Debug on 
SET DEBUG_SOFTCAR=1 
) ELSE (
ECHO SiL Debug off 
SET DEBUG_SOFTCAR=0 
)
rem -----------------------------------------------------------------------------------
IF "%env%"=="S" (	
	IF "%plat%"=="abc" (
		md dir
		copy srt drt
		copy art drt
		copy srt drt
		copy srt drt
	)
	IF "%plat%"=="efg" (
		md dir
		copy srt drt
		copy art drt
		copy srt drt
		copy srt drt
	)
)
rem -------------------------------SiL-----------------------------
IF NOT "%env%"=="S" goto setpython
set cwd=%cd%
set PAR_PATH=Path
cd %PAR_PATH%
set A2L_PATH=path2
for %%i in (*.par) do ccperl perl.pl -a2l=%A2L_PATH%\hn1.a2l -par=%%~ni.par -svl=%%~ni.svl
cd %cwd%
rem -----------------------------------------------------------------------------------

:setpython
SET SC_DRIVE_LETTER=%CD:~0,2%
SET PATH_SCR_SC=path3
SET PYTHONPATH=python_path

rem ------------------------------PYTHON PARSER----------------------------------------
IF "%env%"=="H" SET testenv=_H
IF "%env%"=="S" SET testenv=

IF %LOAD_XML_FILE%==1 (
	DO something
)

IF %GenAuto%==1 (copy srt drt)
set pyt=python path
for /f %%i in ('call %pyt%') do set gen_output=%%i
SET SKRIPT_PATH=op path
echo Generated files are here: %SKRIPT_PATH%
IF %GenAuto%==1 (
	Do something
)
rem -----------------------------------------------------------------------------------


CALL Final.bat 




并且在代码中间"如果不是"%env%" ==" S" goto setpython",在执行setpython之后,是否会返回并执行其余的代码? 我有理解问题,直到执行一个函数(不确定在shell脚本中调用它是什么)。

1 个答案:

答案 0 :(得分:1)

脚本中唯一的“call”语句是最后一个,用于临时传输到Final.bat脚本。否则,脚本从上到下没有循环,没有转到后退等等。

当脚本执行时,它会传递go_start标签,然后向下行到

IF NOT "%env%"=="S" goto setpython

它可能(取决于变量%env%的值)进入下一行(如果它不是S)或跳转到setpython标签。如果它进入下一行,它将执行每一行直到setpython。在任何一种情况下,一旦达到setpython,它就会继续,执行每一行。

还有一些其他“if”陈述,例如,

IF %GenAuto%==1 (
    Do something
)

Do something

可能(或可能不)执行,具体取决于测试的变量(%GenAuto%)的值。

供参考: Using batch files