我正在尝试编写一个简单编译java文件然后运行它的bash脚本
#!/bin/bash
read name
javac $name
$name | sed -r "s/.java//" | java
但它不是运行java文件,而是打开java。
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
blah blah blah
答案 0 :(得分:1)
你想用Bash做一个简单的替换吗?只需使用内置替换工具。
java ${name/.java/}
无需sed
。
答案 1 :(得分: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”命令。你不能只使用stdout中的管道。
答案 2 :(得分:1)
试试这个:
#!/bin/bash
read name
javac $name
class=`echo $name | sed -r "s/.java//"`
`java $class`