简体   繁体   中英

Bash shell function error : command not found

I am new to bash so please bear with me if this is a dumb question :

What I actually want to type in the shell is like this:

javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked

The fact is, if I manually type the above line into bash, it executes with no error. However, if I craft a customized function in .bashrc like this:

function compile() { 'javac -classpath "emarket.jar" '$@'.java -Xlint:unchecked';}

And issue this command in bash:

compile Testclient

It gets to an error saying that :

bash: javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked: command not found

I reckon the function compile() in .bashrc should generate the same command in bash, but I really cannot get through this, can anyone help me? Many thanks in advance!

remove the single quotes surrounding the whole command, and use double quotes around $@

function compile() { 
  javac -classpath "emarket.jar" "$@".java -Xlint:unchecked;
}

see here for quoting variables examples.

The problem is the ' quotes in your compile function. This causes the shell to not break things up at whitespace and treat the entire string as the command (rather than the first word as the command, and the rest as arguments.) Delete those and it should work

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM