Comme dans l'exemple suivant, et comme dans ma récente question Dans bash, où est passé le caractère de fin de ligne ? , je veux savoir "pourquoi" cela arrive
x="$(echo -ne "anbn")" ; echo -n "$x" | xxd -p
# Output is: 610a62
# The trailing newline from the 'echo' command
# has been "deleted" by Command Substitution
Je suppose qu'il doit y avoir des très raison importante pour une action du shell, à savoir la substitution de commande, pour supprimer réellement certaines données de la sortie de la commande qu'elle remplace…
mais je n'arrive pas à comprendre celle-ci, car elle semble être l'antithèse de ce qu'elle est supposé à faire.. c'est-à-dire. pour renvoyer la sortie d'une commande dans le processus de script… Retenir un caractère me semble bizarre, mais je suppose qu'il y a une raison raisonnable à cela… Je suis impatient de découvrir quelle est cette raison…
Réponse acceptée :
Parce que le shell n'était pas initialement destiné à être un langage de programmation complet.
Il est assez difficile de supprimer un n
à la fin à partir d'une sortie de commande.
Cependant, à des fins d'affichage, presque toutes les commandes terminent leur sortie par n
, donc… il doit y avoir un moyen simple de le supprimer lorsque vous souhaitez l'utiliser dans une autre commande. Suppression automatique avec le $()
la construction a été la solution choisie.
Alors, peut-être accepterez-vous cette question comme réponse :
Pouvez-vous trouver un moyen simple de supprimer le n
final si cela n'a pas été fait automatiquement dans la commande suivante ?
> echo The current date is "$(date)", have a good day!
Notez que les guillemets sont obligatoires pour éviter l'écrasement des espaces doubles qui peuvent apparaître dans les dates formatées.