Comando echo de Unix con opción -e

Comando echo de Unix con opción -e

Estaba leyendo sobre el echocomando en UNIX y encontré la -eopción que se usa para habilitar la interpretación de los escapes de barra invertida, la cuestión es que una de estas secuencias de escape de barra invertida era \ \, pero cuando usé los dos comandos:

echo "hello\\\world"

y

echo -e "hello\\\world"

Obtengo el mismo resultado: hola\\mundo, entonces, ¿cuál es la diferencia? |

Respuesta1

El valor predeterminado es expandir las secuencias de escape; la opción -e no es estándar.

Si su implementación de eco no incluye -e en la salida de eco, no es compatible.

El problema aquí es que hay implementaciones que solo siguen los requisitos mínimos de POSIX e ignoran el hecho de que una plataforma a la que se le permite llamarse UNIXcompatible necesita implementar soporte para las XSImejoras de POSIX.

Por cierto: bash en MacOS X y Solaris está compilado para expandir siempre las secuencias de escape. Bash en la variante de compilación predeterminada no es compatible con POSIX XSI.

Los shells compatibles con POSIX como ksh93, bosh o dash expanden las secuencias de escape de forma predeterminada según sea necesario.

Si desea comprobar el comportamiento, su cadena de prueba no es una buena idea. Una mejor prueba sería:

echo '\tfoo'

y para comprobar si fooestá precedido por un carácter de tabulación en la salida.

La razón por la que puede haber tenido problemas es que usó foo\\bary que el shell ya trata las barras invertidas entre comillas dobles. Si desea comprobar el echocomportamiento, debe utilizar cadenas entre comillas simples como argumentos.

información relacionada