到目前为止,我知道你必须创建一个函数才能传递参数。
但是,你如何表示参数的类型?
例如,如果要编译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
任何帮助以及您想要投入的任何无关信息都将非常感激。
答案 0 :(得分:4)
只需使用$ 1两次。将这两个命令与&&
连接起来更安全,因此如果编译不成功,则不会运行java。
function compile_n_run () {
javac "$1".java && java "$1".class
}
答案 1 :(得分: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)相同。