2

Я пытаюсь отправить строку, содержащую "!!" в этом. Однако каждый раз, когда я выполняю его на zsh, zsh заменяет !! с последней введенной командой. Как я могу получить зш, чтобы не интерпретировать "!!«? Я также подтвердил, что то же самое происходит, когда я просто использую sh.

3 ответа3

2

Вы пробовали одну обратную косую черту для каждого персонажа?

\!\!

Предыдущие символы с обратной косой чертой (одна обратная косая черта на один символ) должны давать в действительности именно этот символ, а не заменять его (тогда он не интерпретируется).

1

Вы пробовали заключать в кавычки строку вместо одинарных кавычек?

https://www.linuxquestions.org/questions/programming-9/bash-double-quotes-don%27t-protect-exclamation-marks-545662/

bbbco (04:45 PM) ~/ $ echo "Exclamation!!"
echo "Exclamationecho "Exclamationecho 'Exclamation!!'""
Exclamationecho Exclamationecho Exclamation!!

bbbco (04:43 PM) ~/ $ echo 'Exclamation!!'
Exclamation!!
0

Как уже упоминалось, цитирование или экранирование помогают предотвратить расширение истории в текущей командной строке.

Но вы также можете использовать

unsetopt BANG_HIST

отключить специальную обработку персонажа ! полностью. (Поместите это ваш ~/.zshrc чтобы сделать его постоянным.)

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