es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Script de shell: escapado de comillas simples

Tengo la siguiente (parte) de un script de shell (dentro de t7508-status.sh):

test_expect_success 'status --column' '
    cat >expect <<\EOF &&
# En la rama main
# Tu rama y 'upstream' se han divergido,
# y tienen respectivamente 1 y 2 commits diferentes.
#   (usa "git pull" para fusionar la rama remota en la tuya)
#
# Cambios a ser confirmados:
#   (usa "git restore --staged <archivo>..." para quitar del área de preparación)
#   nuevo archivo: dir2/added
#
# Cambios no preparados para el commit:
#   (usa "git add <archivo>..." para actualizar lo que se confirmará)
#   (usa "git restore <archivo>..." para descartar cambios en el directorio actual)
#   modificado: dir1/modified
#
# Archivos no rastreados:
#   (usa "git add <archivo>..." para incluir en lo que se confirmará)
#   dir1/untracked dir2/untracked
#   dir2/modified  untracked
#
EOF
    COLUMNS=50 git -c status.displayCommentPrefix=true status --column="column dense" >output &&
    test_cmp expect output
'

De acuerdo, la primera parte citada parece evidente status --column, pero la segunda parte citada comienza al final de la primera línea y termina, en mi opinión, en la tercera línea:

# Tu rama y 'upstream' se han divergido,
                  ^--aquí

¿Luego sigue una comilla escapada seguida por una nueva parte citada? ¿O tiene mayor prioridad <<\EOF ... EOF? La razón de mi pregunta es crear el coloreado de sintaxis correcto utilizando ANTLR.

Tags:  

Answer

  1. Avatar for davy.ai

    La sección que comienza con <<\EOF y termina con EOF es un aquí-documento, que permite al script redirigir la entrada desde el propio script en lugar de desde el usuario o desde un archivo. En este caso, el aquí-documento asigna la salida esperada a una variable llamada expect. La sección con las comillas escapadas (\') es simplemente una forma de incluir comillas simples dentro de una cadena con comillas simples. No tiene una relación directa con el aquí-documento.

Comments are closed.