Comment puis-je ajouter un saut de ligne de commande de lecture?
read -p "Please Enter a Message:" message
Comment puis-je ajouter un saut de ligne après Message:
?
- Vous pourriez envisager de faire la mise à jour de la accepté de répondre à celui-ci car il est beaucoup moins hacky (et moins déroutant pour nous les futurs visiteurs...).
Vous devez vous connecter pour publier un commentaire.
J'aime Huang F., Lei répondre, mais si vous n'aimez pas la traduction littérale de saut de ligne, cela fonctionne:
Montre:
...où
_
est l'endroit où le curseur se termine. Notez que depuis la fuite des retours à la ligne sont généralement diminué au cours de la substitution de commande, j'ai inclus les>
par la suite. Mais en fait, votre question initiale ne semble pas vouloir que l'invite de peu, donc:Montre
Il y a une meilleure façon, si.
echo
(commeread
) est un bash intégré, bien que le ci-dessus est un peu maladroit au moins ce n'est pas inutilement la ponte des processus.cr=$'\n'
echo
est un builtin, la substitution de commande génère un nouveau processus pour exécuter la commande.echo "Please enter message: $cr"; read -p "" message
Simplement à la recherche d'exactement la même chose. Vous pouvez utiliser:
Et cela fonctionnera exactement comme demandé:
Voici un extrait de la page de manuel de bash en l'expliquant:
M'a fallu du temps pour le découvrir.
Noter que les apostrophes et les guillemets se comportent différemment à cet égard:
-e
exactement faire? il travaille avec moi sans que-e
,-e
causes que pour moi, que-s
ne marche plus.En tapant un "saut de ligne" entre": "et '"' directement.
read -p "$(echo -e 'Please Enter a Message: \n\b')" message
solution, il imprime le nom de la variable littéralement. Cette solution se développe correctement.Juste pour améliorer les réponses de Huang Lei F. et de T. J. Crowder que j'aime (et ajouté +1) ..
Vous pouvez utiliser l'une des syntaxes suivantes, qui sont fondamentalement les mêmes, cela dépend de votre goût (je préfère le premier):
qui à la fois produira la sortie suivante:
où _ est le curseur.
Dans le cas où vous avez besoin d'un saut de ligne dans une partie quelconque de la chaîne, mais à la fin, vous pouvez utiliser
\n
, par exempleproduira
où . est un blanc la première nouvelle ligne " et " _ " est le curseur.
Seulement ajouter une finale de fuite de saut de ligne, vous devez utiliser
\n\b
comme dans mon premier exempleVoici une amélioration sur le acceptées réponse qui ne nécessite pas de frai un shell interne est exécuté:
De la GNU Bash manuel de référence:
De la
bash
man:Donc, non pas avec
read
lui-même, et de mettre\n
dans la chaîne de message, juste des échos\n
. La réponse devrait être simple, bien que ne soit pasread
pour afficher l'invite de commandes:echo
va se passer si l'entrée est à venir à partir d'un terminal ou non; le messageread
affiche pas.read -p "Please Enter a Message:
Retour" message