Поскольку вы не зависите от bash для расширения переменных в сообщении фиксации, вы можете вместо этого использовать одинарные кавычки. Строки в одинарных кавычках не раскрываются с помощью bash.
bzr commit -m 'This does work!'
Я хочу сделать что-то вроде bzr commit -m "It works!"
. Я могу как-то избежать восклицательного знака bzr commit -m "It works\!"
. Тем не менее, мое сообщение о фиксации содержит обратную косую черту. Как мне избежать восклицательного знака, игнорируя при этом обратную косую черту?
Поскольку вы не зависите от bash для расширения переменных в сообщении фиксации, вы можете вместо этого использовать одинарные кавычки. Строки в одинарных кавычках не раскрываются с помощью bash.
bzr commit -m 'This does work!'
Старый вопрос я знаю, но для будущих искателей:
Вы также можете использовать этот метод, если вы хотите двойные кавычки, а также восклицательный знак:
echo "It's broken"'!'
Это работает, даже если !
это не в конце строки.
Например:
echo "hello there"'!'" and goodbye"
Бонус: аналогичная техника может быть использована для экранирования любого текста в Sh или Bash (с помощью sed): см. Первый вариант в этом ответе . Кроме того, если вы bash-completion
установили, скорее всего, эта quote()
функция уже доступна.
Используйте одинарные кавычки (') вместо двойных кавычек ("). Одинарные кавычки отключают всю интерпретацию содержимого в них, в то время как двойные кавычки отключают только некоторые.
bzr commit -m 'It works!'
Я только что нашел другой способ, который по крайней мере будет работать со echo
строками (предложениями), которые вы хотите акцентировать с восклицательным знаком. Он выполняет более или менее конечный прогон вокруг своей вершины Bash и занимает чуть больше времени для кодирования.
Гекс для восклицательного знака, как указано на http://www.ascii-code.com/, равен 21, поэтому, если вы поместите \x21
в конец своей строки echo -e $foo
, сделайте $foo
свое собственное расширенное эхо [то есть, foo=$(echo -e "$foo")
] то, что вы получить, когда вы echo $foo
снова это строка с !
в конце. И никакого переключения его оси тоже нет.
Работает наверняка в Bash 4+. Более ранние версии, ymmv.