L'ajout d'un saut de ligne dans un fichier de sortie dans un script shell
J'ai un script shell que je suis en cours d'exécution dans Cygwin (c'est peut-être le problème). Pour ce bout de code, je veux simplement écrire la première ligne, et ajouter un saut de ligne:
echo "`date` User `whoami` started the script." >> output.log
echo >> output.log
Mais la sortie.fichier journal ne semble jamais prendre la pause. Si je lance le script plusieurs fois, c'est comme si la deuxième écho de ne pas écrire dans le fichier.
J'ai aussi essayé:
echo -e "`date` User `whoami` started the script.\n" >> output.log
Elle donne les mêmes résultats.
La chose étrange est que si je viens d'entrer dans la deuxième écho déclaration ci-dessus sur la ligne de commande, sans ajouter dans le fichier, il me donne le résultat attendu à la fin de saut de ligne.
- Étrange. Comment voulez-vous déterminer que les retours à la ligne ne sont pas ajoutés?
- En fait, je l'ai juste regardé, il semble que le programme que je suis en ouvrant le journal n'est pas l'interprétation de la LF correctement, et s'attend à sauts de ligne Windows. Si je chat la sortie, il semble à l'honneur les pauses.
Vous devez vous connecter pour publier un commentaire.
Je suis de paris le problème est que Cygwin est écrit fins de ligne Unix (LF) du fichier, et on l'ouvre avec un programme qui attend de ligne Windows-terminaisons (CRLF). Pour déterminer si c'est le cas — et pour un peu d'un hackish solution de contournement — essayez:
(où le
$'\r'
à la fin est un supplément de retour de chariot; il, plus l'Unix de fin de ligne, le résultat sera une Windows de fin de ligne).Essayer:
ou tout simplement:
$'...'
, de sorte que la version imprime la chaîne réelle, backticks et "date" et "whoami" et tous, plutôt que de courir ledate
etwhoami
commandes.Essayer
Essayez d'émettre plusieurs fois. J'espère que vous êtes à la recherche pour le même résultat.
Vous pouvez faire sans une redirection d'e/S:
Vous pouvez également utiliser cette commande pour ajouter un saut de ligne à une liste de fichiers:
Pour
echo
, quelques coquilles mettre en œuvre en tant que commande interne du shell de commande. Il pourrait ne pas accepter la-e
option. Si vous voulez toujours utiliserecho
, essayez de trouver où leecho
fichier binaire, en utilisantwhich echo
. Dans la plupart des cas, il est situé dans/bin/echo
, de sorte que vous pouvez utiliser/bin/echo -e "\n"
faire l'écho d'une nouvelle ligne.