Je veux faire écho à une nouvelle ligne dans un fichier entre des variables dans un script shell. Voici mon code:
var1 = "Bonjour" var2 = "Monde!" logwrite = "$ var1 [Voici où je veux insérer une nouvelle ligne] $ var2 echo "$ logwrite" >> /Users/username/Desktop/user.txt
En ce moment, lorsque j'exécute mon script, le fichier user.txt montre ceci:
Bonjour le monde!
Je veux qu'il montre:
Bonjour Monde!
Comment puis-je faire cela??
EDIT: Voici mon script shell:
echo -n "Quel est votre prénom?" lire d'abord echo -n "Quel est votre nom de famille?" lire en dernier echo -n "Quel est votre deuxième prénom?" lire au milieu echo -n "Quel est votre anniversaire?" lire l'anniversaire echo -e "Prénom: $ premier / nNom: $ dernier / nNom moyen: $ middle / nAnniversaire: $ anniversaire" >> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~ / Desktop / user.txt"
shell
shell-script
echo
daviesgeek
la source
la source
printf "%s\n" $var1 $var2 >> file
?Réponses:
Explication:
La
\n
séquence d'échappement indique un saut de ligne. Passer l'-e
argument à l'écho permet d'interpréter les séquences d'échappement.Il peut même être encore simplifié:
ou même:
la source
\n
au lieu de/n
devrait faire l'affaire :)-e
drapeau.ou en fait vous n'avez pas besoin de vars:
il y a un problème avec john t answer: si l'un des vars avait la chaîne \ n (ou une autre séquence comme \ t) ils seront traduits. on peut obtenir quelque chose de similaire à sa réponse avec printf:
aussi hmm. je vois que vous composez la réponse dans une variable $ logwrite. si c'est la seule utilisation de cette variable, cela semble inutile.
Je pense qu'un document ici pourrait être plus lisible, surtout si vous avez beaucoup de lignes à ajouter au journal:
(ce mot, EOF, est un délimiteur que vous pouvez choisir. il peut s'agir de n'importe quel mot).
méfiez-vous que l'hérédoc étendra les variables $, comme les guillemets doubles. si vous ne voulez pas cela, vous citez l'hérédoc, comme << "EOF"
la source
\n
, d'où la raison pour laquelle j'ai fourni la réponse. La méthodologie «et si» transportait chaque question de ce site dans une discussion sans fin. Quand il arrive sur cette route, il peut poser une autre question :)printf
. C'est POSIX: stackoverflow.com/a/34947759/895245