1

我正在尝试编写一个简单地编译 java 文件然后运行它的 bash 脚本

#!/bin/bash
read name
javac $name
$name | sed -r "s/.java//" | java

但不是运行 java 文件,而是打开 java.util.java 文件。

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

       blah blah blah
4

3 回答 3

1

你想用 Bash 做一个简单的替换吗?只需使用内置的替换工具。

java ${name/.java/}

不需要sed

于 2013-01-28T22:12:35.433 回答
1

尝试替换这个:

#!/bin/bash
read name
javac $name
name=$(echo $name|sed -r "s/.java//")
java $name 

或者,甚至更好:只需输入不带“.java”的主类:

#!/bin/bash
read name
javac $name.java
java $name 

关键是,您需要将参数传递给“java”命令。您不能只使用标准输出中的管道。

于 2013-01-28T22:13:38.043 回答
1

试试这个:

#!/bin/bash
read name
javac $name
class=`echo $name | sed -r "s/.java//"`
`java $class`
于 2013-01-28T22:17:44.780 回答