Como passar a sequência de caracteres ./abcd.sh '{\ “type \”: \ “path \”, \ “key \”: []}' como argumento para um script?

-1

Eu escrevi um script de shell, chamado keepAbcdRunning, cujo trabalho é verificar se o comando / processo 'abcd' está em execução e, se não estiver, iniciá-lo.

keepAbcdRunning tem o formato:

#!/bin/bash
if pgrep -x $1 > /dev/null
then echo "$1 is running"
else echo "calling $2"
$2
fi
exit 0

Como escrevi, keepAbcdRunning precisa de dois argumentos de entrada, $1 é o nome do comando / processo a ser verificado e $2 é o comando necessário para iniciar o abcd.

O próprio abcd é um script que executa um aplicativo que usa uma string formatada pelo Json como entrada. Se eu quisesse chamar abcd diretamente de um terminal, eu ligaria:

./abcd.sh '{\"type\":\"path\",\"key\":[]}'

No entanto, pareço ser incapaz de passar a sequência de caracteres de tal forma que abcd.sh seja chamado corretamente de dentro de keepAbcdRunning ....

    
por indexfingers 20.04.2017 / 13:17

1 resposta

0

Isso eu acho: "./abcd.sh '{\\\" type \\\ ": \\\" caminho \\\ "\, \\\" chave \\\ ": []}'"

Basicamente necessário

\\ - > \

\ "- >"

\, - > ,

Finalmente, toda a coisa precisava estar entre aspas duplas para que eu pudesse ter aspas simples na sequência .... link

Edit: Esta foi a primeira vez que fiz praticamente qualquer coisa com scripting / linux / unix / ubuntu, então aceite meu conselho com um pouco de sal, mas depois descobri que escrever a string json em um arquivo e passar referência para isso arquivo para ser so muito mais simples do que tentar passar a própria string

    
por indexfingers 20.04.2017 / 14:41