Existe alguma ferramenta ou truque para ajudar a citar a loucura?

0

Ao fazer a manutenção do servidor, muitas vezes me vejo escrevendo comandos aninhados em vários níveis, assim:

for server in A B C; do sh -c "ssh $server 'mysql db -e \"select where line like \\"%abc%\\"\"'&"; done

Este pode ser um exemplo inventado, mas é realmente o tipo de coisa que eu tenho que fazer às vezes para alguma tarefa estranha e ad-hoc.

O problema são as citações. Conforme você vai para níveis mais profundos, você tem que começar a escapar das citações, escapando dos cifrões e escapando da fuga. Usar aspas simples ajuda a evitar um nível, mas é isso.

Comecei a trabalhar em uma solução para mim, inspirada na função qq () em perl, mas pensei em perguntar primeiro: existe uma ferramenta, um método ou uma estrutura que facilitará a gravação desses comandos aninhados? sem ficar atolado com barras invertidas?

    
por itsadok 02.01.2014 / 07:23

2 respostas

1

Você pode evitar a maioria das camadas de aspas passando os comandos mysql via stdin ao invés de via argv:

for server in A B C; do
    ssh "$server" 'mysql db' <<< "select * from foo where line like '%abc%';" &
done
wait

Para uma resposta mais genérica, consulte o link

    
por geirha 02.01.2014 / 09:01
0

Tente isto:

echo "ssh $server 'mysql db....'" | sh

Diminui o nível de aninhamento, e também facilita muito para você, porque você pode simplesmente executar o comando echo até obter o comando exato que você quer executar depois de todo o escape.

    
por Eran Ben-Natan 02.01.2014 / 08:26