It is the same as calling anything (a shell script, a C program, a python program, …) from a shell
If calling from any Unix shell, and the parameter has spaces, then you need to quote it.
sh my-shell-script hi "hello guys" bye
You can also use single quotes, these are more powerful. They stop the shell from interpreting anything ($, !, \, *, ", etc, except ')
sh my-shell-script hi 'hello guys' bye
You should also quote every variable used within the function/script.
Note that in your example the arguments are falling apart before they get to the function (as they are passed to the script).
#!/bin/sh
my_procedure{
echo "$1"
echo "$2"
echo "$3"
}
my_procedure("$@")
There is no way to do it automatically, in the script, as there is no way for the script to know which spaces are which (which words are together).
functionas a name of a function. It's a keyword inksh, and some bourne-shell likebash,zsh,dash.dash. Inyashyes. Thoughzshalso acceptsksh's function definition syntax,function() echo x; functionwill work inzsh. So the only shells where that is a problem areksh,bashandyash.zsh, butdashdoesn't.