我试图用javac
编译一个shell脚本,它不断地返回以下错误:
$ bash run_RGE.sh
javac: invalid flag: Element.java
Usage: javac <options> <source files>
use -help for a list of possible options
javac: invalid flag: RGE.java
Usage: javac <options> <source files>
use -help for a list of possible options
javac: invalid flag: -Xms1024m
Usage: javac <options> <source files>
use -help for a list of possible options
sleep: missing operand
Try "sleep --help" for more information.
我的shell脚本如下所示:
#!/bin/bash
# -*- coding: utf-8 -*-
export LIB=C:/home/b04280/Transfert/Libs/
CLASSPATH=$(echo "$LIB"/*.jar | tr ' ' ':')
export ficIn=C:/home/b04280/Transfert/rgeII.xlsx/
export repIn=C:/home/b04280/Transfert/rgeII/
export repOut=C:/home/b04280/Transfert/rgeIIcible/
javac -cp $CLASSPATH Element.java
javac -cp $CLASSPATH RGE.java
javac -Xms1024m -Xmx1024m -cp $CLASSPATH RGE $ficIn $repIn $repOut > docx.txt
sleep
我想知道这个错误是从何而来的,我在这里看了关于同一主题的其他问题,但它们的解决方案似乎不适合我的具体情况。
有什么帮助吗?提前谢谢。
PS。我也有睡眠错误(我“翻译”了这个脚本从批处理-> shell和“睡眠”是我找到的替代“暂停”)
发布于 2020-10-02 20:52:59
我认为这应该更接近你所需要的:
#!/bin/bash
# -*- coding: utf-8 -*-
lib=/home/b04280/Transfert/Libs
classpath=$(echo "$lib"/*.jar | tr ' ' ':')
fic_in=/home/b04280/Transfert/rgeII.xlsx/
rep_in=/home/b04280/Transfert/rgeII/
rep_out=/home/b04280/Transfert/rgeIIcible/
javac -cp "$classpath" Element.java
javac -cp "$classpath" RGE.java
java -Xms1024m -Xmx1024m -cp "$classpath" RGE "$fic_in" "$rep_in" "$rep_out" > docx.txt
特别是:
javac
)java[c]
$LIB
值中删除尾随斜杠可以避免在$CLASSPATH
中使用双斜杠,这可能会混淆无用的export
的值(如果调用其他bash脚本或依赖于正在设置的变量的二进制文件,它们会很有用,但您只是将它们作为parameters)camelCase
).而不是snake_case
在您的上下文中,我不确定您是在执行java[c]
二进制文件的linux版本,还是要执行windows二进制文件。如果是windows,则需要用tr ' ' ':'
替换tr ' ' ';'
部分,因为windows上的类路径是分号分隔的,而不是冒号分隔的。
https://stackoverflow.com/questions/64174213
复制相似问题