如何在Windows批次腳本中依序執行多個shell指令?

如何在Windows批次腳本中依序執行多個shell指令?

我嘗試使用'&'大多數類似帖子的建議,但這不起作用:

@echo off
call variables.bat // contains port numbers and notebook address
ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%" & 
ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server &
start chrome %notebook_address% 
@PAUSE

我基本上有兩個 shell 腳本,允許我遠端執行 jupyter 筆記本並連接到它。我一個接一個地手動運行它們,我想將它們組合在一個腳本中。

第一個在遠端伺服器上運行 jupyter 筆記本:

@echo off 
call variables.bat  // contains port numbers and notebook address
ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%" 
@PAUSE

第二個提供連接埠轉送:

@echo off
call variables.bat
ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server
@PAUSE

我怎樣才能將兩者結合起來?

答案1

Windows 命令列 shell 不是 Bash,而是 Cmd.exe,有​​時稱為「批次」。

如果您想執行這兩個命令同時地,那麼它確實會&在 Bash 中,但在 Cmd 中不具有「背景」效果;它的作用與將兩個命令依序放在不同的行中完全相同。

要並行運行某些內容,您很可能start也可以在此處使用:

@echo off
call variables.bat
start ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%"
start ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server
start chrome %notebook_address% 
pause

儘管關於這兩個ssh連接,我不明白為什麼它們不能合併為一個(即僅調用實際命令並同時設置轉發,而不是使用-N):

@echo off
call variables.bat
start ssh -f -L localhost:%port_l%:localhost:%port_r% user@remote_server "jupyter notebook --no-browser --port=%port_r%"
start chrome %notebook_address% 
pause

相關內容