我是bash的新手所以如果这是一个愚蠢的问题,请耐心等待我:
我真正想在shell中输入的内容是这样的:
javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked
事实是,如果我手动将上面的行键入bash,它就会执行而不会出错。 但是,如果我在.bashrc中制作一个自定义函数,如下所示:
function compile() { 'javac -classpath "emarket.jar" '$@'.java -Xlint:unchecked';}
并在bash中发出此命令:
compile Testclient
错误地说:
bash:javac -classpath“emarket.jar”Testclient.java -Xlint:unchecked:command not found
我认为.bashrc中的函数compile()应该在bash中生成相同的命令,但我真的无法解决这个问题,任何人都可以帮助我吗?非常感谢提前!
答案 0 :(得分:8)
删除整个命令周围的单引号,并在$@
function compile() {
javac -classpath "emarket.jar" "$@".java -Xlint:unchecked;
}
请参阅here以获取变量示例。
答案 1 :(得分:1)
问题是编译函数中的'
引号。这导致shell不会在空格中分解并将整个字符串视为命令(而不是第一个单词作为命令,其余作为参数。)删除它们并且它应该工作