En utilisant Python, je reçois
$ python3 -c 'print("\\\n")'
\
$
C'est-à-dire une barre oblique inverse et une nouvelle ligne, suivies d'une nouvelle ligne supplémentaire insérée par l'interprète.
Utiliser C pour compiler le code
#include <stdio.h>
int main(void)
{
printf("\\\n");
return 0;
}
dans un fichier backslash.out
$ ./backslash.out
\
$
C'est-à-dire, une barre oblique inverse et une nouvelle ligne.
En bash, je reçois
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Que fait exactement la commande bash printf ici? Que fait-il différemment des commandes python print
ou C printf
par rapport au caractère d'échappement \
? Et que dois-je mettre dans la variable STRING
pour obtenir la sortie suivante sur mon terminal:
$ printf "${STRING}"
\
$
Dans l'extrait ci-dessous, vous utilisez des "guillemets" autour des échappements de la barre oblique inversée:
$ STRING="\\\n"
$ printf "${STRING}"
\n$
Cependant, Bash évalue toujours des barres obliques inverses entre guillemets doubles. Par conséquent, le contenu de votre variable après cela est réellement \\n
, comme "\\"
est évalué à \
.
Mettez la chaîne entre guillemets simples pour empêcher le shell de toucher les barres obliques inverses:
$ STRING='\\\n'
$ printf "$STRING"
\
$