tags:

views:

300

answers:

2

Hi all:

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!

+6  A: 

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.

ghostdog74
Thanks so much for that!!!
Michael Mao
+1  A: 

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

Chris Dodd
thanks for the info.
Michael Mao