2017-09-01 38 views
0

這是我確切的批處理文件。我試圖把它轉換在網上做一些研究,並得到一個錯誤翻譯windows bat文件到linux shell腳本

「無法執行子進程‘的/ home/PI /桌面/ TeachVal/TeachValLinuxShell’(沒有這樣的文件或目錄)

echo off 
cls 
echo Running TeachVAL II... 
set path=%path%;/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin 
java -classpath comm.jar;Robot.jar;TeachVAL TeachVAL 
cls 
exit 

這一個是我翻譯的嘗試

#!/bin/bash 
set +v 
clear 
echo "Running TeachVAL II..." 
java -cp ".dir1;dir2;path/home/pi/Desktop/TeachVAL/comm.jar; 
path/home/pi/Desktop/TeachVAL/Robot.jar;/home/pi/Desktop/TeachVAL/TeachVAL" 
clear 
exit 
+1

你檢查過路徑嗎?畢竟它說「沒有這樣的文件」。 – AxelH

+2

我甚至沒有看到你將類傳遞給'java'來運行,只有類路徑設置。 – chepner

+1

錯誤消息中的文件夾無處出現在您的shell腳本代碼中,這似乎表明您發佈了錯誤的錯誤消息,或者您沒有包含實際的代碼。請解決這個問題。 –

回答

0

歡迎到Linux - 比贏的時候生活是美好的在這裏,但也有略有不同的幾件事情, DOWS。

一個區別是Windows使用分號(;)來分隔路徑列表中的條目,但Linux爲此使用冒號(:)。

因此,Windows命令:

java -classpath comm.jar;Robot.jar;TeachVAL TeachVAL 

將對應於這個在Linux上:

java -classpath comm.jar:Robot.jar:TeachVAL TeachVAL 

在一般情況下,在Linux上,分號是用來把多個命令行成一條線。一旦你已經學會了,我想那麼你就可以理解爲什麼:

java -cp .dir1;/home/pi/Desktop/TeachVAL/TeachVAL 

將是一樣的:

java -cp .dir1 
/home/pi/Desktop/TeachVAL/TeachVAL 

這將運行java(無級將被執行),然後嘗試運行找不到的「/ home/pi/Desktop/TeachVAL/TeachVAL」。

還有更多的差異要學習;這裏有一個頁面可以幫助你開始:http://tldp.org/LDP/abs/html/dosbatch.html

+0

感謝您的幫助!這是能夠工作:) –