Не оценивать выражение при использовании cat

В соответствии с этим ответом 1,$!sort является версией в режиме ex-mode. Вы вводите ex-mode, набрав Q в обычном режиме. Нормальная версия этой команды - 1G!Gsort в соответствии с этим ответом SO. В противном случае, как говорит хаос, ! заставляет vim открывать оболочку и выполнять sort в ней (тем самым вызывая программу sort).

4
задан 23 November 2017 в 19:44

6 ответов

Вам нужно избегать символов ``, поскольку они означают «выполнить этот код». Так что строка должна выглядеть так:

DATE=\`date '+%y%m%d-%H%M'\`
4
ответ дан 22 May 2018 в 15:57
  • 1
    Возможно, я рекомендую использовать $( ... ) вместо `` `` `, чтобы избежать только одного символа /$ – derHugo 24 November 2017 в 09:20

Вам нужно избегать символов ``, поскольку они означают «выполнить этот код». Так что строка должна выглядеть так:

DATE=\`date '+%y%m%d-%H%M'\`
4
ответ дан 18 July 2018 в 02:44

Вам нужно избегать символов ``, поскольку они означают «выполнить этот код». Так что строка должна выглядеть так:

DATE=\`date '+%y%m%d-%H%M'\`
4
ответ дан 24 July 2018 в 17:38

cat << \EOF

Если метка цитируется, то здесь документ берется как есть. Или еще процитируйте обратные кавычки в этом документе.

Соответствующая часть страницы руководства:

Если какая-либо часть слова цитируется, разделитель является результатом удаления цитаты на слово, а строки в этом документе не будут расширены. Если слово без кавычек, все строки этого документа подвергаются расширению параметров, подстановке команд и арифметическому расширению, последовательность символов \ & lt; newline & gt; игнорируется, а \ следует использовать для цитирования символов \, $ и `.

Обратите внимание, что это решение скопирует здесь документ дословно; чтобы сделать некоторые расширения, а другие не сделали единственное решение - использовать \ для цитирования тех конструкций, которые не будут расширены.

4
ответ дан 22 May 2018 в 15:57
  • 1
    +1; Двойные кавычки вокруг EOF тоже хорошо работают. Пример: cat > file.asc << "EOF" – Videonauth 23 November 2017 в 19:55
  • 2
    Как и одиночные кавычки. – choroba 23 November 2017 в 20:05
  • 3
    Это решение кажется интересным, если только части EOF оцениваются для аналогичного случая, который у меня есть. Не могли бы вы предоставить полный пример, используя OPs? – derHugo 23 November 2017 в 22:27
  • 4
    @derHugo: Точно так же, как написано OP, просто заменив EOF на \EOF. Содержимое этого документа затем копируется дословно. – AlexP 23 November 2017 в 23:14
  • 5
    Но он этого не хочет, но оценивается $ PROJECT. – derHugo 24 November 2017 в 01:53

cat << \EOF

Если метка цитируется, то здесь документ берется как есть. Или еще процитируйте обратные кавычки в этом документе.

Соответствующая часть страницы руководства:

Если какая-либо часть слова цитируется, разделитель является результатом удаления цитаты на слово, а строки в этом документе не будут расширены. Если слово без кавычек, все строки этого документа подвергаются расширению параметров, подстановке команд и арифметическому расширению, последовательность символов \ & lt; newline & gt; игнорируется, а \ следует использовать для цитирования символов \, $ и `.

Обратите внимание, что это решение скопирует здесь документ дословно; чтобы сделать некоторые расширения, а другие не сделали единственное решение - использовать \ для цитирования тех конструкций, которые не будут расширены.

4
ответ дан 18 July 2018 в 02:44

cat << \EOF

Если метка цитируется, то здесь документ берется как есть. Или еще процитируйте обратные кавычки в этом документе.

Соответствующая часть страницы руководства:

Если какая-либо часть слова цитируется, разделитель является результатом удаления цитаты на слово, а строки в этом документе не будут расширены. Если слово без кавычек, все строки этого документа подвергаются расширению параметров, подстановке команд и арифметическому расширению, последовательность символов \ & lt; newline & gt; игнорируется, а \ следует использовать для цитирования символов \, $ и `.

Обратите внимание, что это решение скопирует здесь документ дословно; чтобы сделать некоторые расширения, а другие не сделали единственное решение - использовать \ для цитирования тех конструкций, которые не будут расширены.

4
ответ дан 24 July 2018 в 17:38
  • 1
    +1; Двойные кавычки вокруг EOF тоже хорошо работают. Пример: cat > file.asc << "EOF" – Videonauth 23 November 2017 в 19:55
  • 2
    Как и одиночные кавычки. – choroba 23 November 2017 в 20:05
  • 3
    Это решение кажется интересным, если только части EOF оцениваются для аналогичного случая, который у меня есть. Не могли бы вы предоставить полный пример, используя OPs? – derHugo 23 November 2017 в 22:27
  • 4
    @derHugo: Точно так же, как написано OP, просто заменив EOF на \EOF. Содержимое этого документа затем копируется дословно. – AlexP 23 November 2017 в 23:14
  • 5
    Но он этого не хочет, но оценивается $ PROJECT. – derHugo 24 November 2017 в 01:53

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

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