Как я печатаю обратную косую черту, сопровождаемую новой строкой с printf?

Используя Python, я добираюсь

$ python3 -c 'print("\\\n")'
\

$ 

Таким образом, одна обратная косая черта и одна новая строка, сопровождаемая дополнительной новой строкой, вставляются интерпретатором.

Используя C, компилируя код

#include <stdio.h>

int main(void)
{
    printf("\\\n");
    return 0;
}

в файл backslash.out урожаи

$ ./backslash.out 
\
$ 

Таким образом, одна обратная косая черта и одна новая строка.

В ударе я добираюсь

$ STRING="\\\n"
$ printf "${STRING}"
\n$ 

Каков точно удар printf команда, делающая здесь? Что это делает по-другому по сравнению с Python print или C printf команды относительно символа ESC \? И что я должен буду вставить переменную STRING получить следующий вывод на моем терминале:

$ printf "${STRING}"
\
$ 
3
задан 23 January 2018 в 18:39

1 ответ

В Вашем отрывке ниже, Вы используете "двойные кавычки" вокруг Escape обратной косой черты:

$ STRING="\\\n"
$ printf "${STRING}"
\n$ 

Однако Bash все еще оценивает некоторые Escape обратной косой черты в двойных кавычках, таким образом, содержание Вашей переменной после этого действительно \\n, как "\\" оценивает к \.

Поместите строку в 'одинарные кавычки', чтобы препятствовать тому, чтобы оболочка коснулась любой из обратных косых черт:

$ STRING='\\\n'
$ printf "$STRING"
\
$ 
3
ответ дан 1 December 2019 в 16:18

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

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