Ferramentas de desenvolvedor · Docker executado para conversor de composição do Docker
Citações, quebras de linha e $VARS: analisando um comando docker run corretamente
· Como funciona
janela de encaixe linha de comando citando
Um comando docker run é uma entrada do shell antes que o Docker o veja. Esta postagem explica como as cotações e as continuações de linha alteram o que são os tokens e por que nenhum conversor pode expandir suas variáveis do shell.
O conversor recebeu um $HOME literal — o comando funciona em seu terminal porque o shell o expande antes da execução do docker
O conversor recebeu um literal $HOME — o comando funciona em seu terminal porque o shell o expande antes da execução do docker. Evidência: $HOME permanece texto porque o tokeniser não realiza expansão. Reproduza a tokenização de shell com literais descartáveis. Emparelhe cada ocorrência de origem com tokens e continuações entre aspas; expansão de reserva e análise do Windows para revisão de destino.
O incidente de cotação também revela que um limite separado do incidente de cotação é que as aspas simples são literais e as aspas duplas processam escapes documentados. Evidência: aspas simples são literais e aspas duplas processam fugas documentadas. Essa restrição de tokenização de shell é um ponto de parada. Inspecione tokens citados e continuações sem comportamento de fabricação e, em seguida, documente uma verificação de host para expansão e análise do Windows.
Este tokenizador se assemelha às regras de palavras do shell POSIX selecionadas, mas não executa nenhuma variável ou expansão de comando
Shell primeiro, Docker depois - os tokens que o Docker recebe são o resultado da cotação, divisão e expansão do shell. Evidência: regras de palavras selecionadas do tipo POSIX são implementadas sem se tornarem um shell; Este tokenizador se assemelha às regras de palavras do shell POSIX selecionadas, mas não executa expansão de variável ou comando. Rastreie tokens de tokenização de shell em tokens e continuações cotadas. Separe os valores ordenados dos campos de último valor; a expansão e a análise do Windows estão fora da coleção.
Um limite do mecanismo de cotação relacionado é que, para esta seção de cotação, mantenha o comando original desta seção de cotação e os avisos para esta seção de cotação ao lado deste arquivo candidato. Evidência: o repositório não oferece um tempo de execução mais amplo ou prova histórica. Use este fato de tokenização de shell para prever um membro ou escalar em tokens e continuações entre aspas. Verifique os avisos antes de decidir qualquer coisa sobre expansão e análise do Windows.
Continuações de barra invertida e nova linha - por que a barra invertida final é um recurso do shell e um espaço perdido após quebrar o comando
Continuações de barra invertida e nova linha - por que a barra invertida final é um recurso do shell e um espaço perdido após quebrar o comando. Evidência: a barra invertida-nova linha desaparece enquanto uma barra invertida isolada do terminal falha. Julgue a serialização de tokenização do shell a partir de seu modelo. A citação em tokens e continuações entre aspas protege os tipos, mas não fornece nenhuma prova operacional para expansão e análise do Windows.
A segunda observação de serialização de cotação é Um limite de saída de cotação separado é que uma amostra wiki pode ser normalizada e seus tokens literais inspecionados. Evidência: uma amostra wiki pode ser normalizada e seus tokens literais inspecionados. Esta saída de tokenização de shell separa as configurações do contexto indisponível. Mantenha os tokens e continuações citados revisáveis e verifique a expansão e a análise do Windows de forma independente.
Aspas simples, aspas duplas e espaços em valores — -e MSG='olá mundo' versus -e MSG=olá mundo
Aspas simples, aspas duplas e espaços em valores — -e MSG='olá mundo' versus -e MSG=olá mundo. Pare na exceção de tokenização do shell em vez de adivinhar. Qualquer adição perto de tokens e continuações citadas precisa de um motivo específico de implantação vinculado à expansão e à análise do Windows.
Outra restrição de exceção de cotação é que um limite de exceção de cotação separado é que a aridade da opção do Docker segue a tokenização e as regras do Windows estão ausentes. Evidência: a aridade das opções do Docker segue a tokenização e as regras do Windows estão ausentes. Mantenha o comando original de tokenização do shell ao lado dos avisos. A comparação mostra o que os tokens e continuações citados contêm e qual expansão e decisão de análise do Windows permanecem manuais.
Expressões de dólar, sintaxe de subshell e tils permanecem literais porque o conversor não é um shell
Variáveis e subshells — $PWD, $(id -u) e ~ são expandidos pelo seu shell, então um conversor os vê literalmente. Evidência: notação subshell crases, variáveis em dólar e til nunca são avaliadas; Expressões de dólar, sintaxe de subshell e tils permanecem literais porque o conversor não é um shell. Crie o exemplo de tokenização de shell a partir de nomes sintéticos. Torne todos os tokens cotados e itens de continuação rastreáveis sem expor a expansão da produção e os detalhes de análise do Windows.
O mesmo exemplo de cotação demonstra que para esta seção de cotação mantenha o comando original desta seção de cotação e os avisos para esta seção de cotação ao lado deste arquivo candidato. O fato de tokenização de shell emparelhado deve estar visível nos tokens e continuações entre aspas. Registre essa linha e evite suposições sobre expansão e análise do Windows.
Exemplo resolvido: limpando um comando colado no wiki - normalizando continuações e citando antes da conversão e, em seguida, verificando o YAML
Exemplo resolvido: limpando um comando colado no wiki - normalizando continuações e citações antes da conversão e, em seguida, verificando YAML. Traduza a consequência da tokenização do shell em um token cotado observável e diferença de continuação. Docker possui a expansão posterior e o veredicto de análise do Windows.
A implementação da consequência de cotação também mostra Um limite de efeito de cotação separado é que $HOME permanece texto porque o tokeniser não realiza expansão. Divida as responsabilidades de tokenização do shell: a conversão grava tokens e continuações entre aspas, o repositório remove segredos e os operadores validam a expansão e a análise do Windows.
A citação do shell do Windows e a expansão completa de POSIX estão fora deste analisador
O que isso não cobre - a própria opção do docker run analisando peculiaridades, como = versus espaço, e diferenças de cotação do shell do Windows. Evidência: a aridade das opções do Docker segue a tokenização e as regras do Windows estão ausentes; A cotação do shell do Windows e a expansão completa de POSIX estão fora deste analisador. Limite o escopo de tokenização do shell aos tokens citados e às ramificações de continuação mostradas aqui. Formulários e padrões vizinhos não podem responder a perguntas de expansão e análise do Windows.
Mais um limite de escopo de cotação segue para manter o comando original para esta seção de cotação e avisos ao lado deste arquivo candidato. Trate esse limite de tokenização de shell como uma exclusão. Prefira tokens e continuações com citações precisas em vez de suposições sobre expansão e análise do Windows.
Conclusão: forneça ao conversor o que o Docker veria - e substitua as variáveis do shell por valores literais ou interpolação Compose ${VAR}
Conclusão: forneça ao conversor o que o Docker veria - e substitua as variáveis do shell por valores literais ou interpolação Compose ${VAR}. Evidência: entrada confiável significa fornecer palavras literais destinadas à análise. Audite a tokenização do shell como opção de origem, campo de modelo, tokens citados e linha de continuação e aviso. Remova os segredos antes de verificar a expansão e a análise do Windows.
Finalmente, a fonte de citação confirma que um limite de decisão de cotação separado é que a barra invertida-nova linha desaparece enquanto uma barra invertida isolada do terminal falha. Fechar a tokenização do shell de forma restrita: tokens e continuações entre aspas são candidatos; expansão e análise do Windows e equivalência de shell não são garantias.