0

到目前为止,我知道您必须创建一个函数才能传递参数。

但是,您如何表示参数的类型?

例如,如果你想编译一个 Java 类文件,然后运行生成的 Java 文件(不必每次都键入两次文件名来区分扩展名),你如何让函数知道名称属于文件不同类型的?

假设这是我们的函数:

compileAndRun()
{
    javac $1
    java  $2   # basically, we want to make this take the same argument
               # (because the names of the *.class and *.java files are the same)
}

所以,而不是输入:

compileAndRun test.class test.java

我们只想输入这个:

compileAndRun test

任何帮助以及您想提供的任何无关信息将不胜感激。

4

2 回答 2

4

只需使用 1 美元两次。将这两个命令用 连接起来比较安全&&,所以如果编译不成功,java 是不会运行的。

function compile_n_run () {
    javac "$1".java && java "$1".class
}
于 2013-10-13T08:39:00.977 回答
2

函数的参数bash实际上没有类型。它们只是字符串,您可以适当地使用它们。在这种情况下,编写一个获取 Java 源文件、编译它并运行结果输出的函数是相当简单的。

compile_n_run () {
    source=$1
    expected_output="${source%.java}.class" 
    javac "$source" && java "$expected_output"
}

$ compile_n_run test.java

我选择要求完整的 Java 源名称,因为它对自动完成更友好一些;您不必.java从命令行中删除,而是让函数为您执行此操作。(否则,这个答案将与choroba's相同)。

于 2013-10-13T21:06:19.743 回答