повторите изменения команды

Работавший в течение многих лет, но теперь по крайней мере, \begin и \end обрабатываются особенно. Изменение в поведении эха должно быть новым. Даже если эхо не является портативным, и эхо тире не поддерживает-e/-E, опции, тем не менее, отзываются эхом, должен последовательно работать.

#!/bin/sh
# Test

# ok:
cat <<EOF  >> $$.tex
\begin{document}
EOF
# bad, worked in earlier releases
echo "\begin{document}" >> $$.tex
# ok:
echo "\\\begin{document}" >> $$.tex
#ok:
echo "\include{xxx}" >> $$.tex
# ok:
echo "\\\end{document}" >> $$.tex
# unexpected bad, worked before 
echo "\end{document}" >> $$.tex

cat $$.tex

Вывод на моей машине с

$ uname -a
Linux courant 4.15.0-33-generic #36-Ubuntu SMP Wed Aug 15 16:00:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux</br>

$ test.sh
\begin{document}
egin{document}
\begin{document}
\include{xxx}
\end{document}
d{document}

или xxd:

00000000: 5c62 6567 696e 7b64 6f63 756d 656e 747d  \begin{document}
00000010: 0a08 6567 696e 7b64 6f63 756d 656e 747d  ..egin{document}
00000020: 0a5c 6265 6769 6e7b 646f 6375 6d65 6e74  .\begin{document
00000030: 7d0a 5c69 6e63 6c75 6465 7b78 7878 7d0a  }.\include{xxx}.
00000040: 5c65 6e64 7b64 6f63 756d 656e 747d 0a1b  \end{document}..
00000050: 6e64 7b64 6f63 756d 656e 747d 0a         nd{document}.
4
задан 4 September 2018 в 10:17

1 ответ

В совместимом UNIX echo, \b расширен в символ возврата.

sh -c 'echo "a\bc"'

или

echo -e "a\bc" # (bash)

произведет

c

Другие специальные символы (от man echo)

   \\     backslash

   \a     alert (BEL)

   \b     backspace

   \c     produce no further output

   \e     escape

   \f     form feed

   \n     new line

   \r     carriage return

   \t     horizontal tab

   \v     vertical tab

   \0NNN  byte with octal value NNN (1 to 3 digits)

   \xHH   byte with hexadecimal value HH (1 to 2 digits)

Некоторые полезные ссылки:

0
ответ дан 1 December 2019 в 11:03

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

Похожие вопросы: