Question

I am confused; I run a script, with sh -c , but if I want to pass a parameter, it will be ignored.

example:

# script.sh
param=$1
echo "parameter is: " $param

If I run it as

sh -c ./script.sh hello

I get nothing in the output

Why is this happening? How can I avoid this?

Was it helpful?

Solution

This will work for you:

sh -c "./script.sh hello"

If you run it that way:

sh -c ./script.sh hello

than hello became sh's second parameter and ./script.sh is run with none parameters.

OTHER TIPS

The -c switch accepts a single argument. The shell will be doing the parsing itself. E.g.

sh -c './script.sh hello'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top