Bash : Sed et esperluette

Bonsoir,

Je soumets un petit problème, d’entités HTML avec Sed - ce dernier n’étant pas mon problème - enfin, je crois…

Dans un premier fichier nommé “toilelibre_response.log.html”, j’ai le code suivant :

 <textarea>http://pix.toile-libre.org/?img=1436948630.png</textarea><textarea>http://pix.toile-libre.org/upload/original/1436948630.png</textarea><textarea>[url=http://pix.toile-libre.org/?img=1436948630.png][img]http://pix.toile-libre.org/upload/thumb/1436948630.png[/img][/url]</textarea><textarea>[url=http://pix.toile-libre.org/?img=1436948630.png][img]http://pix.toile-libre.org/upload/img/1436948630.png[/img][/url]</textarea><textarea><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/thumb/1436948630.png"/></a></textarea><textarea><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></textarea>

Le code bash dans mon fichier de test est le suivant :

#!/bin/bash
#set -x
clear

text_img_mini="Afficher cette image miniature : "

declare -a text_toilelibre
text_toilelibre[0]="URL d'accès à l'image : "
text_toilelibre[1]="Afficher l'image : "
text_toilelibre[2]="Code pour insérer la miniature dans le forum : "
text_toilelibre[3]="Code pour insérer l'image dans le forum : "
text_toilelibre[4]="Code pour insérer la miniature sur votre site web : "
text_toilelibre[5]="Code pour insérer l'image sur votre site web : "

fichier="Capture d'écran_2014-09-30-15-16-15.png"
#tampon="/tmp/tmp.N7wRAo6jXB"
tampon="/tmp/toilelibre_response.log.html"

entities="s/&/\&amp\;/g;s/</\&lt\;/g;s/>/\&gt\;/g;s/\"/\&quot\;/g;s/'/\&\#39\;/g;"

            string="$(grep "<textarea>.*</textarea>" "${tampon}" | tr -d '\t\r\n' | tr -s ' ' | sed -e "s#^ \+##g;s#textarea#dd#g;s#<dd>#§#g;s#</dd>#|-|¤#g")"   # ;s#<a href='\([^>]*\)'><img src='\([^>]*\)' />#<a href='\1' title=''><img alt='' src='\2'/>#g;s#'#\"#g"
            #echo "${string}"
            # construction du tableau urls
            OLD_IFS=$IFS
            IFS='¤' read -a urls <<< "$string"
            IFS=$OLD_IFS

            array2=("${urls[@]}")

            # modification des urls pour ajout de code html
            patterns[0]="s#§\(.*\)|-|#<dt><a href=\"\1\" title=\"${text_toilelibre[0]}${fichier}\">\1</a></dt>#g"  # s#dd#dt#g;
            patterns[1]="s#§\(.*\)|-|#<dd><a href=\"\1\" title=\"${text_toilelibre[1]}${fichier}\">\1</a></dd>#g"
            patterns[2]="s#§\(.*\)|-|#<dd><strong>\1</strong></dd>#g"
            patterns[3]="s#§\(.*\)|-|#<dd><strong>\1</strong></dd>#g"
            patterns[4]="s#§\(.*\)|-|#<dd>\1</dd>#g"    # <br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[4]}\" value='\1'><br>
            patterns[5]="s#§\(.*\)|-|#<dd>\1</dd>#g"   # <br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[5]}\" value='\1'><br>

            # ajout du texte dans le code html
            for index in "${!text_toilelibre[@]}"; do

                if [[ ${index} -eq 4 ]]; then

                    array2[index]="$(sed -e "s# \+##g;s#§#${text_toilelibre[index]}#g" <<< "${array2[index]}")"
                    urls[index]="$(sed -e "${patterns[index]};s#<dd>#<dd>${text_toilelibre[index]}#g" <<< "${urls[index]}")"

                elif [[ ${index} -eq 5 ]]; then

                    array2[index]="$(sed -e "s#^ \+##g;s#§#${text_toilelibre[index]}#g" <<< "${array2[index]}")"
                    info="$(sed -e "s#§\(.*\)|-|#\1#g;${entities}" <<< "${urls[index]}")"; echo "${info}"
                    urls[index]="$(sed -e "s#title=\"\"#title=\"${title}\"#g;s#alt=\"\"#alt=\"${fichier}\"#g" <<< "${urls[index]}")"
                    urls[index]="$(sed -e "${patterns[index]};s#<dd>\(.*\)</dd>#<dd>${text_toilelibre[index]}<br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[index]}\" value=\"${info}\"><br>\1</dd>#g" <<< "${urls[index]}")"

                else

                    array2[index]="$(sed -e "s#^ \+##g;s#§#${text_toilelibre[index]}#g" <<< "${array2[index]}")"
                    urls[index]="$(sed -e "${patterns[index]};s#<d\([dt]\)>#<d\1>${text_toilelibre[index]}#g" <<< "${urls[index]}")"

                fi

                echo "${urls[index]}" #>> "/tmp/toilelibre.tmp"
            done
            unset patterns

L’exécution du code me retourne cela :

Bien, quelqu’un a-t-il l’idée de génie pour que je puisse envoyer le code en gras noir - soit de l’encodage html - sans que mon bash me retourne une erreur - en rouge - , et donc que le script n’exécute pas ce dont j’ai besoin … m’est avis que ce sont les esperluettes ‘&’ qui le troublent, n’est-ce pas ?!

Vu que tu utilise sed à de nombreuses reprise durant le script, il pourrait être intéressant de savoir à quel appel ça plante.
Pour t’aider, tu peux mettre au début de ton fichier la commande [mono]set -xv[/mono] qui va détailler les différentes actions effectuées par Bash. Attention quand même, la sortie est généralement plutôt verbeuse…

C’est dans la condition elif ${index} -eq 5 …

Je construis la variable info, qui est appellée dans la construction suivante :

urls[index]="$(sed -e "${patterns[index]};s#<dd>\(.*\)</dd>#<dd>${text_toilelibre[index]}<br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[index]}\" value=\"${info}\"><br>\1</dd>#g" <<< "${urls[index]}")"

La variable info transforme les balises html en entités html encodées. - C’est le code en gras noir, que j’ai mis en exemple précédemment.
Cela pour l’inclusion dans l’attribut value de la balise input.

Je testerai avec l’ajout de l’option v … merci.

Alors, suite à l’ajout de l’option v dans le script, voici le retour :

++ sed -e 's#§\(.*\)|-|#<dd>\1</dd>#g;s#<dd>\(.*\)</dd>#<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="&lt;a href=&quot;http://pix.toile-libre.org/?img=1436948630.png&quot; title=&quot;Capture d&#39;écran_2014-09-30-15-16-15.png&quot;&gt;&lt;img alt=&quot;Capture d&#39;écran_2014-09-30-15-16-15.png&quot; src=&quot;http://pix.toile-libre.org/upload/img/1436948630.png&quot;/&gt;&lt;/a&gt;"><br>\1</dd>#g'
sed: -e expression n°1, caractère 256: commande inconnue: `�'

[strike]Cela m’est toujours autant “cryptique” ?![/strike]

Bon, j’ai corrigé en enlevant ceci ‘;s/’/&#39;/g;’ de la variable entities …

Grrr, mais maintenant cela me retourne l’ensemble du code traité au lieu de me retourner que la valeur de la variable info, dans l’attribut valeur …

+ info='&lt;a href=&quot;http://pix.toile-libre.org/?img=1436948630.png&quot; title=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot;&gt;&lt;img alt=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot; src=&quot;http://pix.toile-libre.org/upload/img/1436948630.png&quot;/&gt;&lt;/a&gt;'

+ echo '&lt;a href=&quot;http://pix.toile-libre.org/?img=1436948630.png&quot; title=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot;&gt;&lt;img alt=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot; src=&quot;http://pix.toile-libre.org/upload/img/1436948630.png&quot;/&gt;&lt;/a&gt;'

&lt;a href=&quot;http://pix.toile-libre.org/?img=1436948630.png&quot; title=&quot;Capture d'écran_2014-09-30-15-16-15.png&quot;&gt;&lt;img alt=&quot;Capture d'écran_2014-09-30-15-16-15.png&quot; src=&quot;http://pix.toile-libre.org/upload/img/1436948630.png&quot;/&gt;&lt;/a&gt;

sed -e "s#title=\"\"#title=\"${title}\"#g;s#alt=\"\"#alt=\"${fichier}\"#g" <<< "${urls[index]}"

++ sed -e 's#title=""#title=""#g;s#alt=""#alt="Capture d'\''écran_2014-09-30-15-16-15.png"#g'

+ urls[index]='§<a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a>|-|'

sed -e "${patterns[index]};s#<dd>\(.*\)</dd>#<dd>${text_toilelibre[index]}<br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[index]}\" value=\"${info}\"><br>\1</dd>#g" <<< "${urls[index]}"

++ sed -e 's#§\(.*\)|-|#<dd>\1</dd>#g;s#<dd>\(.*\)</dd>#<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="&lt;a href=&quot;http://pix.toile-libre.org/?img=1436948630.png&quot; title=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot;&gt;&lt;img alt=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot; src=&quot;http://pix.toile-libre.org/upload/img/1436948630.png&quot;/&gt;&lt;/a&gt;"><br>\1</dd>#g'

+ urls[index]='<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;a href=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;http://pix.toile-libre.org/?img=1436948630.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot; title=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;Capture d'\''écran_2014-09-30-15-16-15.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;img alt=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;Capture d'\''écran_2014-09-30-15-16-15.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot; src=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;http://pix.toile-libre.org/upload/img/1436948630.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;/<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;/a<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>'

+ echo '<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;a href=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;http://pix.toile-libre.org/?img=1436948630.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot; title=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;Capture d'\''écran_2014-09-30-15-16-15.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;img alt=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;Capture d'\''écran_2014-09-30-15-16-15.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot; src=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;http://pix.toile-libre.org/upload/img/1436948630.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;/<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;/a<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>'
<dd>Code pour insérer l'image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;a href=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;http://pix.toile-libre.org/?img=1436948630.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot; title=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;Capture d'écran_2014-09-30-15-16-15.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;img alt=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;Capture d'écran_2014-09-30-15-16-15.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot; src=<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;http://pix.toile-libre.org/upload/img/1436948630.png<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>quot;/<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>lt;/a<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>gt;"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>

            unset patterns

Pourquoi il boucle sur l’ensemble du code, maintenant ???

C’est bien l’usage de l’esperluette qui le fait tourner en boucle !

Ainsi, si pour le code suivant :

title="$(sed -e "s#'#\&\;#g" <<< "${fichier}")"; echo "${title}"
urls[index]="$(sed -e "${patterns[index]};s#<dd>\(.*\)</dd>#<dd>${text_toilelibre[index]}<br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[index]}\" value=\"${title}\"><br>\1</dd>#g" <<< "${urls[index]}")"
echo "${urls[index]}"

J’ai pour retour :

sed -e "s#'#\&\;#g" <<< "${fichier}"
++ sed -e 's#'\''#\&\;#g'
+ title='Capture d&;écran_2014-09-30-15-16-15.png'
+ echo 'Capture d&;écran_2014-09-30-15-16-15.png'
Capture d&;écran_2014-09-30-15-16-15.png

sed -e "${patterns[index]};s#<dd>\(.*\)</dd>#<dd>${text_toilelibre[index]}<br><input type=\"text\" readonly=\"readonly\" size=\"${#urls[index]}\" value=\"${title}\"><br>\1</dd>#g" <<< "${urls[index]}"
++ sed -e 's#title=""#title=""#g;s#alt=""#alt="Capture d'\''écran_2014-09-30-15-16-15.png"#g;s#§\(.*\)|-|#<dd>\1</dd>#g;s#<dd>\(.*\)</dd>#<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="Capture d&;écran_2014-09-30-15-16-15.png"><br>\1</dd>#g'
+ urls[index]='<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="Capture d<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>;écran_2014-09-30-15-16-15.png"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>'

+ echo '<dd>Code pour insérer l'\''image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="Capture d<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>;écran_2014-09-30-15-16-15.png"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'\''écran_2014-09-30-15-16-15.png"><img alt="Capture d'\''écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>'
<dd>Code pour insérer l'image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="Capture d<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>;écran_2014-09-30-15-16-15.png"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>

Pour l’esperluette, toute seule :

title="$(sed -e "s#'#\&#g" <<< "${fichier}")"; echo "${title}"

Capture d&écran_2014-09-30-15-16-15.png
<dd>Code pour insérer l'image sur votre site web : <br><input type="text" readonly="readonly" size="224" value="Capture d<dd><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>écran_2014-09-30-15-16-15.png"><br><a href="http://pix.toile-libre.org/?img=1436948630.png" title="Capture d'écran_2014-09-30-15-16-15.png"><img alt="Capture d'écran_2014-09-30-15-16-15.png" src="http://pix.toile-libre.org/upload/img/1436948630.png"/></a></dd>

Je suis tombé sur un bogue ?
Je vais faire légèrement différemment mais c’est bizarre :frowning:

Je dois t’avouer que j’ai un peu de mal avec tes retours comprenant une tripotée de ligne HTML…
Tu pourrais pas nous faire un petit ECM (Exemple Complet Minimal) un poil plus lisible ?

Le propos à comprendre, surtout est que s’il y a la présence de l’esperluette … ce qui est le propos dans le contexte des entités HTML - BASH cherche à l’interpréter et retourne l’ensemble du code - ce qui n’est pas le cas recherché - puisque le souhait est d’inclure les entités HTML dans l’attribut value de la balise input !

Dans l’attribut value de la balise input, j’aimerai pouvoir retourner un ensemble de code HTML, encodé en tant qu’entités HTML - ce qui facilite l’inclusion du code en question … hors dans ces entités HTML, de fait, il y a la présence de l’esperluette … Bash tient à interpréter celle-ci et retourne un résultat autre que celui attendu - décrit ci-dessus :wink:

Oui, ça je commençais à comprendre, mais un ECM reste toujours utile à des fins de test.
M’enfin je vais essayer de reproduire le problème et voir si je trouve une solution…

Beh, c’est déjà mon fichier de test que j’ai mis dans le premier post …
Je finis d’écrire une autre partie de mon code …
et je m’attelle à écrire cet ECM que tu affectionnes tant !

salut,

il faut protéger les éventuelles esperluettes figurant dans les variables :$ varEsp="bla&;bla" $ sed 's/chat/'"${varEsp//&/\&}"'/g' <<<"chien chat alligator" chien bla&;bla alligator

@Watael, je te remercie, mais si tu regardes bien mon code, dans le premier post, tu remarqueras que c’est le cas dans la variable entities :

entities="s/&/\&amp\;/g;s/</\&lt\;/g;s/>/\&gt\;/g;s/\"/\&quot\;/g;s/'/\&\#39\;/g;"

Malgré tout, j’ai le problème dont je parle …

pourtant, dans la variable ${info}, par exmple, les esperluettes ne sont pas protégées :value="&lt;a href=&quot;http://pix.toile-libre.org/?img=1436948630.png&quot; title=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot;&gt;&lt;img alt=&quot;Capture d'\''écran_2014-09-30-15-16-15.png&quot; src=&quot;http://pix.toile-libre.org/upload/img/1436948630.png&quot;/&gt;&lt;/a&gt;"

Watael, nous sommes d’accord ! Tu as compris le problème …

Je crois avoir appréhendé où ce situe le schmilblick … je testerais ça plus tard … ce matin, je dois aller travailler.

J’ai remarqué que si je voulais avoir une sortie en couleur dans le mode console, je devais écrire mes variables couleurs ainsi :

if [[ "${output_color}" == "true" ]]; then
        NORMAL="\\\\e[0;39m"
        VERT="\\\\e[0;32m"
    fi

Et, non pas :

NORMAL="\e[0;39m"
VERT="\e[0;32m"

J’ai découvert, par test, qu’il fallait que j’échappe plusieurs le symbole ‘’, pour que cela fonctionne correctement, étant donné que cela passe dans une instruction liée à sed … m’est avis que cela doit être du même acabit, pour l’esperluette : à tester !

Bon, ce soir, je tente de passer par un fichier tampon intermédiaire où sauf pour la simple quote, il n’y a pas de problème …

’ devient apos; et lors de l’inclusion de ce fichier intermédiaire, par la commande cat, il fait n’importe quoi … à me remplacer les esperluettes par le code suivant ‘’ !!!

Bon, j’ai contourné le problème en injectant le code dans un fichier temporaire html, après la construction du tableau $urls …
puis j’inclue ce code dans mon code html ! Et, là, je veille à ne pas appeler sed !!!