/ / como escapar citações no argumento de comando para sh -c? [duplicado] - concha, traço

como escapar cotações no argumento de comando para sh -c? [duplicado] - concha, traço

O comando shell cmd pode ter espaço em branco e aspas simples e duplas.

Como escapar dessas citações para passar corretamente o comando para um shell POSIX:

>dash -c "cmd"

A outra questão apontada como dup, pergunta sobre aspas duplas. Uma das respostas provavelmente vai funcionar - dividir o comando e usar citações concatenadas. Por exemplo, se cmd fosse

cd "dir"; ls "foobar"

então nós transformaríamos isso em

>dash -c "cd "dir"; ls """foobar""

Isso é confuso ... não há maneira mais fácil?

Adicionado: parece que ninguém me entende ... Eu só quero um procedimento geral, um algoritmo, que leva em entrada, uma seqüência de caracteres (para ser completamente preciso, feito de caracteres ASCII imprimíveis de 0 a 127 na tabela ASCII) e saídas, a segunda seqüência de caracteres. O requisito é que, se a primeira string for executada assim

POSIX_shell>string1

o resultado é o mesmo que

>POSIX_shell -c string2

Estou mais claro agora, por favor me avise.

Respostas:

1 para resposta № 1

Primeiro de tudo, tente evitar coisas bagunçadas como vocêmencionado. Se você precisar, mantenha-o simples, todas as aspas duplas dentro da aspa simples não terão problema. Todas as aspas simples dentro de aspas duplas não devem ser um problema.

#Example:
echo ""These are double quoted""
echo ""These are single quoted""

Terceiro (confuso e evite isso se possível), qualquer cota simples que você queira dentro de uma cota única, deve ser evitada usando várias aspas.

echo """"""These are all single quoted, but messy""""""

Em quarto lugar, uma aspa dupla dentro de uma aspa dupla deve ser escapada usando uma barra invertida

echo ""These are double quoted""