la construction d'une chaîne de
J'ai ce code:
#!/bin/bash
input="./user.cvs"
while IFS=';' read -r f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13
do
path="./QRcodes/$f2$f3.png"
vcard="BEGIN:VCARD%0AN;CHARSET=utf-8:$f3;$f2;;$f1;%0AADR;CHARSET=utf-8;INTL;PARCEL;WORK:;;$f10;$f11;;$f12;$f13%0AEMAIL;INTERNET:$f6%0AORG:$f4%0ATEL;WORK:$f8%0ATEL;FAX;WORK:$f9%0ATITLE:$f5%0AURL;WORK:$f7%0AEND:VCARD"
latex=""
encodedVCard=$(echo "$vcard" | sed -e 's/\+/\%2B/g')
url="http://api.qrserver.com/v1/create-qr-code/?size=300x300&data=$encodedVCard"
wget -O "$path" "$url"
latex+="\n \\begin{tabular}{ C C } \\includegraphics[height=30mm]{graphic.png} & Name \\\\ \\end{tabular}"
echo $latex
done < "$input"
Tout fonctionne sauf le 'echo $latex" toujours imprime la même ligne, au lieu de plusieurs fois. Ce qui me manque?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez ajouter à une chaîne, juste
ou
Vous devez être prudent que bash n'interprète pas le dessus, d'une nouvelle var par exemple
"$a4
" pourrait être interprété comme une variablea4
et non pas comme$a
avec4
ajouté.latex="$latex a" echo $latex
mais Il indique toujours une uneif ["${counter:-0}" -gt 21] ;
est-il une erreur dans l'énoncé?Plusieurs problèmes:
Barre oblique inverse expressions ne sont pas traités spécialement à l'intérieur des guillemets, donc, "\n"
est de deux caractères, "\" et "n", pas un seul retour à la ligne. Utiliser $'\n' pour inclure un véritable
de retour à la ligne
echo $latex
étend la variable, mais bash effectue wordsplitting sur n'importe quel espace contenues danslatex
, y compris les retours à la ligne, de sorte que les retours à la ligne ne sont jamais vus parecho
. Vous avez besoin de citer la variable:echo "$latex"
.Comme souligné par d'autres, vous êtes la réinitialisation de la variable à chaque itération de la boucle.
Mettre tous ensemble,
Vous avez
dans la boucle, de sorte qu'il se réinitialise à chaque fois. La placer avant le début de la boucle.