Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing argument containing space in shell script

Tags:

shell

I need my script to be able to accept arguments with space characters. If, for example, I have a script as follows:

for SOME_VAR in $@ do     echo "$SOME_VAR"     cd "$SOME_VAR" done; 

If I pass arguments to the script (assuming it is called foo.sh)

sh foo.sh "Hello world" 

I am expecting the script to print Hello world and change the directory to Hello world. But I get this error message instead:

hello cd: 5: can't cd to hello world cd: 5: can't cd to world 

How exactly do I pass an argument with a space character to a command in a shell script?

like image 902
Jeffrey04 Avatar asked May 25 '09 08:05

Jeffrey04


People also ask

How do you pass space separated arguments in shell script?

You should just quote the second argument. Show activity on this post. If calling from any Unix shell, and the parameter has spaces, then you need to quote it. You should also quote every variable used within the function/script.

How do you pass a space argument?

You can put double-quotes around an argument in a java command, and that will allow you to pass arguments with spaces in them.


1 Answers

You must wrap the $@ in quotes, too: "$@"

This tells the shell to ignore spaces in the arguments; it doesn't turn all arguments into a very long string.

like image 89
Aaron Digulla Avatar answered Sep 23 '22 08:09

Aaron Digulla