considerar:
#!/bin/bash echo ' ' $LINENO echo '' ' ' $LINENO
El primer eco imprime correctamente un 4, pero la segunda imprime un eco 5 en lugar de 6. Me estoy perdiendo algo, o se trata de un error? (Usando bash 3.00.15)
considerar:
#!/bin/bash echo ' ' $LINENO echo '' ' ' $LINENO
El primer eco imprime correctamente un 4, pero la segunda imprime un eco 5 en lugar de 6. Me estoy perdiendo algo, o se trata de un error? (Usando bash 3.00.15)
Parece un error de implementación (error) en bash.
I utilizados:
#!/bin/bash -p
echo $LINENO
echo ' ' $LINENO '
' $LINENO '
' $LINENO
echo '' '
' $LINENO
que produjo:
2
3
3
3
6
que apoya la teoría de que se evalúa la variable antes de la cáscara considera la línea a se ha completado. Una vez que la línea se ha completado, actualiza el LINENO y continúa.
versiones Bash probados: 3.2.48 (MAC), 4.1.5 (Linux)
Cuando utilizo la sintaxis:
echo '
' $LINENO
se pone el número de línea más reciente. Parece estar relacionado con la evaluación de la cadena vacía transportada como único argumento en la línea.
Bash
parece interpretar una cadena múltiple & argumento multilínea al comando echo
estar en una sola línea del archivo de código fuente (script), porque Bash
tiene que concatenar la cadena múltiple & argumento de varias líneas de el comando echo
en un argumento único (una línea). El mecanismo de concatenación también se desencadena por una cadena vacía ''
seguida de una cadena que contiene un carácter de nueva línea echo -e '' + '\n' + $LINENO
.
#!/bin/bash
# Bash concatenates a multi-string & multi-line argument ...
echo ' ' $LINENO '
' $LINENO '
' $LINENO
# ... into a one line argument.
echo -e "' ' $LINENO '\n' $LINENO '\n' $LINENO\n"
#!/bin/bash
echo "2
3
4
5
6 LINENO: $LINENO" # 6 LINENO: 6
exit
#!/bin/bash
echo "2" " " "
3
4
5
6 LINENO: $LINENO" # 6 LINENO: 2
# echo -e "2" + " " + "\n3\n4\n5\n6 LINENO: $LINENO"
exit
zsh no parecen tener el misfeature ... – Petesh