J'essaie d'imprimer -n
en utilisant le echo
commandement. Mais si je tape simplement echo -n
il n'émet qu'un saut de ligne et ne s'affiche pas. -n
à la place, il émet une nouvelle ligne.
Réponses
Trop de publicités?Le problème est que echo
interprète le -n
comme argument. Dans l'implémentation par défaut de bash, cela signifie (à partir de help echo
):
-n do not append a newline
Il existe plusieurs façons de contourner ce problème :
-
Faites-en quelque chose qui n'est pas une option en incluant un autre personnage. Par exemple, dites
echo
de ne pas imprimer un saut de ligne avec-n
puis dites-lui d'interpréter les échappements de backslash avec-e
et ajouter la nouvelle ligne explicitement.$ echo -ne '-n\n' -n
-
Sinon, il suffit d'inclure un espace
$ echo " -n" -n
Cependant, cela ajoute un espace que vous ne voulez probablement pas.
-
Utilisez un caractère non-imprimant avant lui. Ici. J'utilise le retour arrière (
\b
)$ echo -e "\b-n" -n
Cela ajoute également un personnage supplémentaire dont vous ne voulez probablement pas.
-
Utiliser la ruse
$ echo n- | rev -n
En
rev
imprime simplement sa sortie inversée. -
Utilice le bon outil pour le travail
$ printf -- '-n\n' -n
Vous pouvez utiliser cette commande, mais elle ajoute un espace supplémentaire.
echo -e "\r-n"
C'est une sorte de piratage.
-e
active les symboles de commande de type backslash.
\r
est un retour chariot.
En fait, tout \
Un caractère valide fera l'affaire à n'importe quel endroit de la chaîne.
Vous pouvez voir lesquels sont valides en help echo
.
echo "-n"
ne fonctionne pas car -n
est utilisé comme paramètre pour echo
.
P.S. La meilleure solution, selon moi, est
echo -e "-n\c"
Il n'ajoute pas tout caractère supplémentaire .
echo -e "-n\n"
imprime la même chose mais avec un nouveau caractère de ligne.
- Réponses précédentes
- Plus de réponses