Como escrever o símbolo “!” entre aspas duplas no bash? [duplicado]

0

Não consigo descobrir como escrever o símbolo ! em scripts bash ao colocá-lo em strings de aspas duplas.

Por exemplo:

var="hello! my name is $name! bye!"

Algo louco acontece se eu digitar os seguintes comandos:

$ age=20
$ name='boda'
$ var="hello! my name is $name! bye!"

Quando pressiono enter no último comando, o comando se repete (digita a si mesmo) sem o último ! :

var="hello! my name is $name! bye"

Se eu pressionar enter novamente:

$ var="hello! my name is $name bye"

Se eu pressionar Enter novamente, desaparecerá. Nada será exibido:

$ 

Se eu tentar isso:

$ echo "hello\! my name is $name\! bye\!"

Em seguida, o resultado é: hello\! my name is boda\! bye\!

Se eu usar aspas simples, meu nome não será expandido:

$ echo 'hello! my name is $name! bye!'

As saídas são: hello! my name is $name! bye!

Eu tenho isso funcionando assim:

$ echo "hello"'!'" my name is $name"'!'" bye"'!'

Mas é uma grande confusão com " e ' impossíveis de entender / editar / manter / atualizar.

Alguém pode ajudar?

    
por bodacydo 29.11.2015 / 10:11

1 resposta

0

Seu código será mais fácil de ler se você fizer assim:

:~$ name='boda'
:~$ var="hello! my name is $name! bye!" && echo $var
hello! my name is boda! bye!
  • && - O segundo comando echo $var é executado somente se o primeiro comando var="hello! my name is $name! bye!" for bem-sucedido.

  • :~$ - Não é digitado neste exemplo porque denota o prompt bash.

  • ! - Você não precisa escapar do ! no comando acima porque está dentro de um par de caracteres de aspas duplas.

por 29.11.2015 / 10:24