Emita parâmetros de passagem para / bin / sh -c

2

Estou tentando usar /bin/sh -c para executar um script .sh com um parâmetro de data. A opção -c não é opcional, pois é o que a estrutura da minha equipe usa. Não consigo obter o parâmetro epoch de datas para passar para o meu script corretamente. A seguir, um exemplo que demonstra como a chamada de um arquivo faz com que os parâmetros não funcionem, enquanto a passagem de um comando funciona diretamente bem. O comando do meio (sem o -c) é a saída esperada com cada número repetindo.

root:xxxxx@xxxx:/opt/xxxxxx/software_versions> /bin/sh -c /opt/xxxxxx/software_versions/test2.sh 1 2 3 4
1
2
3
4
root:xxxxx@xxxx:/opt/xxxxxx/software_versions> /bin/sh  /opt/xxxxxx/software_versions/test2.sh 1 2 3 4
11
22
33
44
root:xxxxx@xxxxx:/opt/xxxxxx/software_versions> /bin/sh -c 'echo $1 echo $2' a b c d
b echo c

Conteúdo do script:

echo 1$1
echo 2$2
echo 3$3
echo 4$4
    
por Eekhoorntje 26.05.2016 / 22:03

1 resposta

2

Seu primeiro exemplo funcionará bem se você o chamar como

software_versions> /bin/sh -c "/opt/xxxxxx/software_versions/test2.sh 1 2 3 4"

Usando -c, você chama um subshell para executar o comando que o segue. Argumentos adicionais não serão passados para a sub-shell de qualquer maneira previsível. Você resolve isso enviando a string completa como argumento.

    
por 26.05.2016 / 23:52

Tags