Je veux faire écho d'une nouvelle ligne à un fichier entre les 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
À l'heure actuelle, lorsque j'exécute mon script, le fichier user.txt indique ceci:
Bonjour le monde!
Je veux le montrer:
Bonjour le monde!
Comment puis-je faire cela??
EDIT: Voici mon script Shell:
echo -n "Quel est votre prénom?" à lire en premier 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 "Quelle est votre date de naissance?" lire un anniversaire echo -e " Prénom: $ first/nLast Nom: $ last/nNom moyen: $ middle/nAnniversaire: $ birthday ">> /Users/matthewdavies/Desktop/user.txt qlmanage -p" ~/Desktop/user. SMS"
var1="Hello"
var2="World!"
logwrite="$var1\n$var2"
echo -e "$logwrite" >> /Users/username/Desktop/user.txt
Explication:
La séquence d'échappement \n
indique un saut de ligne. Passer l'argument -e
à echo permet d'interpréter les séquences d'échappement.
Il peut même être simplifié davantage:
var1="Hello"
var2="World!"
echo -e "$var1\n$var2" >> /Users/username/Desktop/user.txt
ou même:
echo -e "Hello\nWorld! " >> /Users/username/Desktop/user.txt
var1='Hello'
var2='World!'
echo "$var1" >> /Users/username/Desktop/user.txt
echo "$var2" >> /Users/username/Desktop/user.txt
ou en fait vous n'avez pas besoin de vars:
echo 'Hello' >> /Users/username/Desktop/user.txt
echo 'World!' >> /Users/username/Desktop/user.txt
il y a un problème avec john t answer: si un des vars avait la chaîne\n (ou une autre séquence comme\t), il sera traduit. on peut obtenir quelque chose de similaire à sa réponse avec printf:
printf '%s\n%s\n' 'Hello' 'World!'
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 here-doc pourrait être plus lisible, spécialement si vous avez beaucoup de lignes à ajouter au journal:
cat >> /Users/username/Desktop/user.txt <<EOF
Hello
World
EOF
(Ce mot, EOF, est un délimiteur que vous pouvez choisir. Ce peut être n'importe quel mot).
méfiez-vous que l'heredoc développera $ variables, comme les guillemets doubles. si vous ne le souhaitez pas, vous citez l'heredoc, comme << "EOF"