我有一个bash文件:
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]")
echo "\n$LOGMSG" >> /dev/tty
javac ~/Desktop/SomeClass.java
java ~/Desktop/SomeClass $LOGMSG
STATUS=$?
echo "\n" >> /dev/tty
echo $STATUS >> /dev/tty
exit 0
调用此java文件:
public class SomeClass {
public static void main(String[] args) {
String result = "";
for (String s: args) {
result = result + " " + s;
}
String regex = ".*\\bHello\\b.*";
if(result.matches(regex)) {
System.out.println("It matches");
System.exit(0);
} else {
System.out.println("It does not match");
System.exit(42);
}
}
}
我从未在Java文件中退出1
的退出代码。但是,当我回显bash文件中的状态时,它总是显示'1'这背后的原因是什么?
答案 0 :(得分:1)
错误代码是因为Java无法启动。您没有指定要正确运行的类。
如果我的桌面目录中有一个类,我需要使用以下命令从另一个目录运行它:
java -cp ~/Desktop SomeClass
假设SomeClass
没有指定包。如果文件顶部有package org.foo.bar;
,则需要使用
java -cp ~/Desktop org.foo.bar.SomeClass