1

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
4

3 に答える 3

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 からのパイプだけを使用することはできません。

于 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 に答える
1

Bash で単純な置換を行いたいですか? 組み込みの置換機能を使用するだけです。

java ${name/.java/}

の必要はありませんsed

于 2013-01-28T22:12:35.433 に答える