¿Cómo escapar de una comilla simple en una cadena de comillas simples en Bash?
Quiero mostrar una cadena en Bash como esta
I'm a student
Por supuesto que puedes hacerlo así
echo "I'm a student"
¿Pero cómo lograr esto usando comillas simples alrededor de la cadena ?
3 answers
echo 'I\'m a student'
No funciona. Pero las siguientes obras:
echo $'I\'m a student'
De la página man de bash:
Una comilla simple no puede aparecer entre comillas simples, incluso cuando están precedidas por una barra invertida.
....
Las palabras de la forma are'string' se tratan especialmente. Palabra se expande a cadena, con caracteres de escape de barra invertida reemplazados como especificado por el estándar ANSI C.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-24 08:38:29
La solución "fea" mencionada por Glenn Jackman debería ser listada como una respuesta de alto nivel. Funciona bien y es realmente hermoso en algunas situaciones.
'I'"'"'m a student'
Esto termina la cadena entrecomillada simple después de I
luego comienza inmediatamente una cadena entrecomillada doble que contiene una comilla simple y luego comienza otra cadena entrecomillada simple. Bash entonces concatena todas las cadenas contiguas en una.
Hermoso!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-02 17:22:27
El siguiente ejemplo funciona porque la comilla simple escapada \'
está técnicamente entre dos argumentos con comillas simples
echo 'I'\''m a student'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-20 06:29:04