Используя Python, я получаю
$ python3 -c 'print("\\\n")'
\
$
То есть, одна обратная косая черта и одна новая строка, за которой следует добавленная новая строка, вставленная интерпретатором.
Использование C, компиляция кода
#include <stdio.h>
int main(void)
{
printf("\\\n");
return 0;
}
в файл backslash.out дает
$ ./backslash.out
\
$
То есть один обратный слэш и одна новая строка.
В bash я получаю
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Что именно делает команда bash printf? Что он делает иначе, чем команды python print или C printf относительно escape-символа \? И что мне нужно будет поместить в переменную STRING, чтобы получить следующий вывод на моем терминале:
$ printf "${STRING}"
\
$
В приведенном ниже фрагменте вы используете «двойные кавычки» вокруг escape-кодов обратной косой черты:
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Однако Bash все еще оценивает некоторые обратные слэши-экраны внутри двойных кавычек, поэтому содержимое вашей переменной после этого на самом деле \\n, поскольку "\\" оценивает значение \.
Поместите строку в «одиночные кавычки», чтобы оболочка не коснулась любой из обратных косых черт:
$ STRING='\\\n'
$ printf "$STRING"
\
$
В приведенном ниже фрагменте вы используете «двойные кавычки» вокруг escape-кодов обратной косой черты:
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Однако Bash все еще оценивает некоторые обратные слэши-экраны внутри двойных кавычек, поэтому содержимое вашей переменной после этого на самом деле \\n, поскольку "\\" оценивает значение \.
Поместите строку в «одиночные кавычки», чтобы оболочка не коснулась любой из обратных косых черт:
$ STRING='\\\n'
$ printf "$STRING"
\
$
В приведенном ниже фрагменте вы используете «двойные кавычки» вокруг escape-кодов обратной косой черты:
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Однако Bash все еще оценивает некоторые обратные слэши-экраны внутри двойных кавычек, поэтому содержимое вашей переменной после этого на самом деле \\n, поскольку "\\" оценивает значение \.
Поместите строку в «одиночные кавычки», чтобы оболочка не коснулась любой из обратных косых черт:
$ STRING='\\\n'
$ printf "$STRING"
\
$