Я не могу понять, как писать ! символ в скриптах 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 ответ1

0

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

:~$ 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.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .