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?
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.
You can put double-quotes around an argument in a java command, and that will allow you to pass arguments with spaces in them.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With