Используя 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}"
\
$
В Вашем отрывке ниже, Вы используете "двойные кавычки" вокруг Escape обратной косой черты:
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Однако Bash все еще оценивает некоторые Escape обратной косой черты в двойных кавычках, таким образом, содержание Вашей переменной после этого действительно \\n
, как "\\"
оценивает к \
.
Поместите строку в 'одинарные кавычки', чтобы препятствовать тому, чтобы оболочка коснулась любой из обратных косых черт:
$ STRING='\\\n'
$ printf "$STRING"
\
$