Destaque da sintaxe do bash dos subshells

13

Considerando a grande quantidade de perguntas que se relacionam aos subshells no Bash ("Por que minha variável não aumenta nesse loop canalizadowhile read ?"), Pensei que seria muito bom consultar um editor ou serviço onde o código que será executado em subshells é formatado de forma diferente do código executado no shell pai. Pode ser útil como um dispositivo educacional (veja a diferença entre code | codee code < <(code)instantaneamente). Isso existe?

Pontos de bônus se alguém implementá-lo para jEdit ou VIm.

Obviamente, ele não precisa ser perfeito (na minha experiência, nenhum destaque de sintaxe é), mas desconfio de coisas do tipo (foo=bar; echo $foo;)e command | while read ...não deve ser muito difícil para começar.

l0b0
fonte
Tenho certeza de que você pode adicioná-lo ao vimrealce do código.
22412 Kevin
2
@ Kevin: A questão é bastante se existe, de qualquer forma. Obviamente, poderia ser adicionado a qualquer editor que suporte um sistema de destaque completo de Turing.
L0b0
1
No caso do loop piped while, o POSIX não especifica qual parte do pipe é executada no pai, portanto, como uma ferramenta de ensino, esse destaque, se existir, ensinaria as pessoas a escrever scripts shell não portáteis :(
James Youngman
@JamesYoungman: Outra razão para torná-lo Bash específicas de :)
l0b0

Respostas:

2

Eu não acho que isso exista. Seria útil, mas difícil de implementar por meio de análise de sintaxe padrão usada em editores. Do ponto de vista da análise, existem muitas palavras-chave e símbolos especiais que precisariam ser analisados ​​para determinar um bloco de código que pertence a um subshell.

Mas ficaria feliz em ver que estou errado e alguém fez o esforço necessário para criar essas configurações.

rozcietrzewiacz
fonte
0

Meu Vim já faz isso.

Na verdade, isso me incomoda, porque faz com que os comentários dentro dos subshells não obtenham o destaque apropriado aplicado.

insira a descrição da imagem aqui

Este é o patch 874 do Vim 7.3, compilado a partir da fonte.

Steven Lu
fonte
Às vezes, defino o tipo de arquivo para zshquando estou trabalhando em um subshell. Isso corrige o realce da sintaxe.
OMG que é perfeito. Obrigado!! Eu tenho que ter todo esse bloco enorme (com muitos comentários) dentro do subshell para que eu possa fazer set -x; set -eisso nessa seção. E para capturar toda essa saída, incluindo stderr em um log.
9183 Steven Lu Lu
1
Não vejo nenhuma formatação no subshell, o que não parece muito útil. Ou está faltando apenas na captura de tela?
L0b0
o conjunto de variáveis ​​e a trappalavra - chave são destacados lá. apenas falhou em destacar comentários. o tipo de arquivo zsh funciona embora. Agora, quanto a diferenciar o sub shell do shell principal (que afinal é o que você queria, eu acho), bem ....... usa alguns comentários?
Steven Lu