Esta pregunta ya tiene una respuesta aquí:
- En bash, ¿cómo escapo de un signo de exclamación? 5 respuestas
No puedo entender cómo escribir un !
símbolo en los scripts de bash cuando lo pongo entre comillas dobles.
Por ejemplo:
var="hello! my name is $name! bye!"
Algo loco sucede si escribo los siguientes comandos:
$ age=20
$ name='boda'
$ var="hello! my name is $name! bye!"
Cuando presiono enter en el último comando, el comando se repite (se escribe a sí mismo) sin el último !
:
var="hello! my name is $name! bye"
Si presiono enter nuevamente:
$ var="hello! my name is $name bye"
Si presiono enter nuevamente, desaparece, no se genera nada:
$
Si intento esto:
$ echo "hello\! my name is $name\! bye\!"
Luego sale: hello\! my name is boda\! bye\!
Si uso comillas simples, entonces mi nombre no se expande:
$ echo 'hello! my name is $name! bye!'
Las salidas son: hello! my name is $name! bye!
Lo tengo trabajando de esta manera:
$ echo "hello"'!'" my name is $name"'!'" bye"'!'
Pero es un gran desastre "
e '
imposible de entender / editar / mantener / actualizar.
¿Alguien puede ayudar?
echo $var
, respóndeme con hello! my name is boda! bye!
. ¿Estás seguro de que no escribiste var="hello! my name is $name! bye" !!
?
echo hi
enter y luego !!
enter. Compruebe si lo expande antes de ejecutarlo. Quizás set +o histexpand
pueda ayudar.
$name
no se expande!