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.
davy.ai
La sección que comienza con
<<\EOF
y termina conEOF
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 llamadaexpect
. 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.