开发者

Pass bash script parameters to sub-process unchanged

开发者 https://www.devze.com 2022-12-10 08:22 出处:网络
I want to write a simple bash script that will act as a wrapper for an executable. How do I pass all开发者_C百科 the parameters that script receives to the executable? I tried

I want to write a simple bash script that will act as a wrapper for an executable. How do I pass all开发者_C百科 the parameters that script receives to the executable? I tried

/the/exe $@

but this doesn't work with quoted parameters, eg.

./myscript "one big parameter"

runs

/the/exe one big parameter

which is not the same thing.


When a shell script wraps around an executable, and if you do not want to do anything after the executable completes (that's a common case for wrapper scripts, in my experience), the correct way to call the executable is:

exec /the/exe "$@"

The exec built-in tells the shell to just give control to the executable without forking.

Practically, that prevents a useless shell process from hanging around in the system until the wrapped process terminates.

That also means that no command can be executed after the exec command.


You have to put the $@ in quotes:

/the/exe "$@"
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号