Italiano

Strumenti per sviluppatori · Docker viene eseguito sul convertitore di composizione Docker

Virgolette, interruzioni di riga e $VARS: l'analisi di un comando docker esegue correttamente

· Come funziona

finestra mobile riga di comando citando

Diagramma astratto che illustra virgolette, interruzioni di riga e $var: analisi corretta di un comando di esecuzione della finestra mobile
Illustrazione vettoriale originale ToolAcre

Un comando di esecuzione docker è un input della shell prima che Docker lo veda. Questo post spiega come le virgolette e le continuazioni di riga cambiano cosa sono i token e perché nessun convertitore può espandere le variabili della shell.

Il convertitore ha ricevuto un valore letterale $HOME: il comando funziona nel tuo terminale perché la shell lo espande prima dell'esecuzione della finestra mobile

Il convertitore ha ricevuto un valore letterale $HOME: il comando funziona nel tuo terminale perché la shell lo espande prima dell'esecuzione della finestra mobile. Prova: $HOME rimane testo perché il tokenizzatore non esegue alcuna espansione. Riprodurre la tokenizzazione della shell con valori letterali usa e getta. Abbina ciascuna occorrenza di origine a token e continuazioni tra virgolette; riservare l'espansione e l'analisi di Windows per la revisione della destinazione.

L'incidente della citazione rivela anche che un limite separato dell'incidente della citazione è che le virgolette singole sono letterali e le virgolette doppie elaborano escape documentati. Prova: le virgolette singole sono letterali e le virgolette doppie elaborano escape documentati. Questo vincolo di tokenizzazione della shell è un punto fermo. Ispeziona i token e le continuazioni tra virgolette senza comportamento di produzione, quindi documenta un controllo dell'host per l'espansione e l'analisi di Windows.

Questo tokenizzatore assomiglia alle regole delle parole shell POSIX selezionate ma non esegue alcuna espansione di variabili o comandi

Prima la shell, poi Docker: i token che Docker riceve sono il risultato della quotazione, della divisione e dell'espansione della shell. Prova: le regole delle parole selezionate simili a POSIX vengono implementate senza diventare una shell; Questo tokenizzatore assomiglia alle regole delle parole shell POSIX selezionate ma non esegue alcuna espansione di variabili o comandi. Traccia i token di tokenizzazione della shell nei token e nelle continuazioni tra virgolette. Separare i valori ordinati dai campi dell'ultimo valore; l'espansione e l'analisi di Windows sono esterne alla raccolta.

Un limite correlato al meccanismo di quotazione è che per questa sezione di quotazione mantenere il comando originale e gli avvisi per questa sezione di quotazione accanto a questo file candidato. Prova: il repository non fornisce alcuna prova storica o di runtime più ampia. Utilizzare questo fatto di tokenizzazione della shell per prevedere un membro o uno scalare nei token e nelle continuazioni tra virgolette. Controlla gli avvisi prima di decidere qualsiasi cosa sull'espansione e sull'analisi di Windows.

Continuazioni di barra rovesciata-ritorno a capo: perché la barra rovesciata finale è una caratteristica della shell e uno spazio vagante dopo aver interrotto il comando

Continuazioni di barra rovesciata-ritorno a capo: perché la barra rovesciata finale è una caratteristica della shell e uno spazio vagante dopo aver interrotto il comando. Prova: la barra rovesciata-newline scompare mentre una barra rovesciata solitaria terminale fallisce. Giudica la serializzazione della tokenizzazione della shell dal suo modello. La citazione di token e continuazioni tra virgolette protegge i tipi ma non fornisce alcuna prova operativa per l'espansione e l'analisi di Windows.

La seconda osservazione sulla serializzazione delle citazioni è che un limite di output delle citazioni separato è che un campione wiki può essere normalizzato e i suoi token letterali ispezionati. Prova: un campione wiki può essere normalizzato e i suoi token letterali ispezionati. Questo output di tokenizzazione della shell separa le impostazioni dal contesto non disponibile. Mantieni revisionabili i token e le continuazioni tra virgolette e controlla l'espansione e l'analisi di Windows in modo indipendente.

Virgolette singole, doppie e spazi nei valori — -e MSG='ciao mondo' contro -e MSG=ciao mondo

Virgolette singole, doppie e spazi nei valori — -e MSG='ciao mondo' contro -e MSG=ciao mondo. Fermati all'eccezione di tokenizzazione della shell invece di indovinare. Qualsiasi aggiunta accanto ai token e alle continuazioni tra virgolette richiede un motivo specifico della distribuzione legato all'espansione e all'analisi di Windows.

Un altro vincolo di eccezione di quotazione è che un limite separato di eccezione di quotazione è che l'opzione Docker arity segue la tokenizzazione e le regole di Windows sono assenti. Prova: l'opzione Docker arity segue la tokenizzazione e le regole di Windows sono assenti. Mantieni il comando di tokenizzazione della shell originale accanto agli avvisi. Il confronto mostra cosa contengono i token e le continuazioni citati e quale decisione di espansione e analisi di Windows rimane manuale.

Le espressioni del dollaro, la sintassi della subshell e le tilde rimangono letterali perché il convertitore non è una shell

Variabili e subshell — $PWD, $(id -u) e ~ vengono espanse dalla tua shell, quindi un convertitore le vede letteralmente. Prova: la notazione della subshell, i backtick, le variabili del dollaro e la tilde non vengono mai valutate; Le espressioni del dollaro, la sintassi della subshell e le tilde rimangono letterali perché il convertitore non è una shell. Costruisci l'esempio di tokenizzazione della shell da nomi sintetici. Rendi tracciabile ogni token citato e elemento di continuazione senza esporre i dettagli di espansione della produzione e di analisi di Windows.

Lo stesso esempio di esempio di citazione dimostra che per questa sezione di citazione conservare il comando originale e gli avvisi per questa sezione di citazione accanto a questo file candidato. Il fatto di tokenizzazione della shell accoppiata dovrebbe essere visibile nei token e nelle continuazioni tra virgolette. Registra quella riga ed evita ipotesi sull'espansione e sull'analisi di Windows.

Esempio funzionante: ripulire un comando incollato nel wiki: normalizzare le continuazioni e quotare prima della conversione, quindi controllare YAML

Esempio funzionante: ripulire un comando incollato nel wiki: normalizzare le continuazioni e citare prima della conversione, quindi controllare YAML. Traduci la conseguenza della tokenizzazione della shell in una differenza osservabile tra token e continuazioni. Docker possiede l'espansione successiva e il verdetto di analisi di Windows.

L'implementazione della conseguenza delle virgolette mostra anche un limite separato dell'effetto delle virgolette è che $HOME rimane testo perché il tokenizzatore non esegue alcuna espansione. Responsabilità della tokenizzazione della shell divisa: la conversione scrive token e continuazioni tra virgolette, il repository rimuove i segreti e gli operatori convalidano l'espansione e l'analisi di Windows.

La citazione della shell di Windows e l'espansione completa POSIX sono entrambe esterne a questo parser

Ciò che questo non copre: l'opzione di esecuzione della finestra mobile che analizza le stranezze, come = rispetto allo spazio e la shell di Windows che cita le differenze. Prova: l'opzione Docker arity segue la tokenizzazione e le regole di Windows sono assenti; La citazione della shell di Windows e l'espansione completa POSIX sono entrambe esterne a questo parser. Limita l'ambito della tokenizzazione della shell ai token tra virgolette e ai rami di continuazione mostrati qui. I moduli e le impostazioni predefinite adiacenti non possono rispondere alle domande sull'espansione e sull'analisi di Windows.

Un ulteriore limite all'ambito delle citazioni deriva dal mantenimento del comando originale per questa sezione delle citazioni e dagli avvisi accanto a questo file candidato. Tratta questo limite di tokenizzazione della shell come un'esclusione. Preferisci token e continuazioni quotati accurati rispetto alle ipotesi sull'espansione e sull'analisi di Windows.

Conclusione: dai al convertitore ciò che Docker vedrebbe e sostituisci le variabili shell con valori letterali o componi l'interpolazione ${VAR}

Conclusione: dai al convertitore ciò che Docker vedrebbe e sostituisci le variabili della shell con valori letterali o componi l'interpolazione ${VAR}. Prova: input affidabile significa fornire parole letterali destinate all'analisi. Controlla la tokenizzazione della shell come opzione di origine, campo del modello, token tra virgolette e riga di continuazione e avviso. Rimuovere i segreti prima di controllare l'espansione e l'analisi di Windows.

Infine, la fonte di citazione da asporto conferma che un limite decisionale separato per la citazione è che la barra rovesciata-newline scompare mentre una barra rovesciata solitaria terminale fallisce. Chiudi la tokenizzazione della shell in modo restrittivo: token e continuazioni tra virgolette sono un candidato; l'espansione, l'analisi di Windows e l'equivalenza della shell non sono garanzie.