2015-11-13 152 views
0

我對shell腳本非常陌生,我的問題很簡單。 在下面的代碼中執行「:go_start」直到「:setpython」,並執行「setpython」,直到代碼末尾的調用函數結束。在shell中跳轉命令

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" (\t 
 
\t IF "%plat%"=="abc" (
 
\t \t md dir 
 
\t \t copy srt drt 
 
\t \t copy art drt 
 
\t \t copy srt drt 
 
\t \t copy srt drt 
 
\t) 
 
\t IF "%plat%"=="efg" (
 
\t \t md dir 
 
\t \t copy srt drt 
 
\t \t copy art drt 
 
\t \t copy srt drt 
 
\t \t copy srt drt 
 
\t) 
 
) 
 
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 (
 
\t 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 (
 
\t Do something 
 
) 
 
rem ----------------------------------------------------------------------------------- 
 

 

 
CALL Final.bat

和代碼的中期 「如果不是 」%ENV%「 ==」 S 「轉到setpython」,執行setpython之後,它回來,並執行代碼的其餘部分? 我在理解方面存在問題,直到函數(不知道在shell腳本中調用了什麼)執行。

回答

1

腳本中唯一的「調用」語句是末尾的那個,用於暫時轉換爲Final.bat腳本。否則,腳本進入頂部至底部,不需要環路,沒有goto的去落後等

在腳本執行時,它把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

+0

OK對不起,只是eddited我的代碼。請立即檢查。現在我已經添加了goto命令,同時運行:setpython。它會運行,直到調用命令? – Ashok

+0

不過,我只看到一個「goto」聲明。批處理文件可以使用「goto」執行循環(它們沒有while/do機制)。 –

+0

我實際上不知道shell腳本的語法,我想知道「gostart」或「set python」中的所有內容是僅僅是那些或整個事物之後的第一組語句 – Ashok