Поведение эха со многими обратными слешами - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть проект с целью реализации того же поведения, что и команда echo. Моя проблема с обратной косой чертой. Моя информация говорит о том, что когда появляется обратная косая черта sh, вы должны рассматривать следующий символ как простой, но здесь я думаю, что это не то же самое.

Это пример:

echo \\\\
OUTPUT : \

Проблема здесь в том, что я ожидаю, что на выходе будет 2 обратной косой черты, а не одна. Чтобы получить 2 обратных слеша, мне нужно написать 6 обратных слешей:

echo \\\\\\

Может ли кто-нибудь помочь мне понять это поведение?

1 Ответ

1 голос
/ 16 апреля 2020

Есть несколько слоев, где обратные слеши интерпретируются. Это экранирующий символ в оболочке (среди других мест). Backsla sh, за которым следует символ, является escape-кодом для другого символа (например, \n интерпретируется как разрыв строки).

При первом выполнении echo \\\\\\ оболочка анализирует escape последовательно и в конечном итоге передает \\\ команде (в данном случае echo).

Кавычка строки в оболочке предотвратит интерпретацию (т. е. echo "\\" буквально передаст две обратные косые черты команде echo). У вас также есть дополнительный уровень интерпретации, или ваша программа неправильно обрабатывает последовательность backsla sh. В конечном итоге вам нужно будет избежать его для каждого слоя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...