Как написать символ "!" Между двойными кавычками в bash?

Я не могу понять, как писать ! символ в скриптах bash, если поместить его в строки двойных кавычек.

Например:

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

Что-то сумасшедшее случается, если я набираю следующие команды:

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

Когда я нажимаю Enter, команда наконец повторяется (набирает себя) без последней !:

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

Если я нажму Enter еще раз:

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

Если я нажимаю ввод снова, он исчезает, ничего не выводится:

$ 

Если я попробую это:

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

Затем выводит: hello\! my name is boda\! bye\!

Если я использую одинарные кавычки, то мое имя не раскрывается:

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

Выходы: hello! my name is $name! bye!

У меня это работает так:

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

Но это один большой беспорядок с " а также ' невозможно понять / отредактировать / сохранить / обновить.

Кто-нибудь может помочь?

1 ответ

Решение

Ваш код будет легче читать, если вы сделаете это так:

:~$ name='boda'
:~$ var="hello! my name is $name! bye!" && echo $var
hello! my name is boda! bye!
  • && - 2-я команда echo $var выполняется только если 1-я команда var="hello! my name is $name! bye!" преуспевает.

  • :~$ - Это не напечатано в этом примере, потому что это обозначает приглашение bash.

  • ! - Вам не нужно избегать ! в приведенной выше команде, потому что она находится внутри пары символов в двойных кавычках.

Другие вопросы по тегам