Linux
在Unix中獲取Windows中bat文件的返回值?
我有以下情況:-我
bbb
在 Windows 2003 中編寫了一個批處理文件並設置了一個返回值 = 3,exit /b 3
然後我通過這個命令從 Unix 執行這個批處理文件:-ssh -l admin host 'cmd /c start bbb'
但是當我列印返回值時,我得到(0)而不是( 3)。我列印這個值echo $?
。現在如何從 Windows 批處理中獲取返回值“退出程式碼”?
您不能同時使用 bash 和批處理的確切程式碼。
我的猜測是腳本遵循一個條件,例如:
if WINDOWS exit /b 3 else exit 3
這都是虛擬碼,我不確定這兩個系統都適用。
編輯: 或者您可以走更簡單的路線並編寫兩個完全不同的腳本文件; job.bat和job.sh。
我對此很感興趣,所以我做了一些研究。我認為使用該
start
命令會給您帶來問題 - start 會導致該命令在另一個 shell 中執行。當您exit /b 3
將返回值傳遞給執行的 shellcmd /c
時,當它退出時,您只會得到一個0
返回值ssh
,因此$?
為 0。我在 c:\temp\b.bat 中創建了一個簡單的批處理文件
@echo off exit /b 3
像這樣執行批處理文件
ssh -l admin host 'cmd /c c:/temp/b.bat'
返回 3 到 $? 按要求。
注意:在上面的命令中使用
/
代替。\
我的測試環境是 Windows Vista 上的 copssh 3.1.4,但我希望它在您的 2k3 環境中也能正常工作。