Why when I run sh -c [script], it won't accept any positional parameters?

StackOverflow https://stackoverflow.com/questions/23604113

  •  20-07-2023
  •  | 
  •  

Pergunta

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?

Foi útil?

Solução

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.

Outras dicas

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

sh -c './script.sh hello'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top