Bonsoir
J'ai bien compris à quoi sert cette ligne.
Le pb, c'est que j'ai déjà fait ce que tu suggères: tracer la variable "nb_canaux":
if [[ ${canaux} == True ]]
then
echo "TEXT@@END@@_textedebug@@Rechercher le nbre de canaux"
nb_canaux=${mkv_info##*Track number: ${ID}}
nb_canaux=${nb_canaux#*Channels: }
nb_canaux=${nb_canaux%%??? *}
echo "TEXT@@END@@_textedebug@@Trouvé ${nb_canaux} canaux..."
[[ ${nb_canaux} =~ ^[0-9]*$ ]] || echo "TEXT@@END@@_textedebug@@La variable nb_canaux :${nb_canaux} n'est pas valide." && unset nb_canaux
echo "TEXT@@END@@_textedebug@@et maintenant ${nb_canaux} canaux"
else
unset nb_canaux
fi
Le résultat est que cette variable est bien à "6" juste avant cette ligne, et juste après, elle se retrouve vide (sans afficher la phrase "La variable nb_canaux:x...")
Canaux est True
Rechercher le nbre de canaux
Trouvé 6 canaux...
et maintenant canaux
Si la ligne est inactivée, la variable reste à 6, et le réencodage fonctionne parfaitement:
Canaux est True
Rechercher le nbre de canaux
Trouvé 6 canaux...
et maintenant 6 canaux
C'est donc bien cette instruction qui cause le vidage de la variable. Je ne connais pas la syntaxe donc, je ne peux pas dire ce qui ne va pas. Est-ce que par hasard la fin de la ligne ("&& unset nb_canaux") ne serait pas interprétée comme un "else" implicite, alors que la première partie (echo "TEXT@
@End@@_textedebug@@La variable nb_canaux :${nb_canaux} n'est pas valide.") serait le "then"?
Ce qui est bizarre, c'est que ça semble marcher chez toi...