Bonjour, voici un cas plutôt épineux.
L'idée est d'intégrer une sorte d'entête dans tous les futurs script SH .... une image parle mieux que des mots :
J'ai déjà réussi à recréer les différentes lignes (chacune contenue dans une chaîne puis sauvegardé comme élément d'un tableau).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ## // --------------------------------------------------------------- \\ ## ## || || ## ## || Script ........................................... || ## ## || ...................................................... || ## ## || ...................................................... || ## ## || || ## ## \\ --------------------------------------------------------------- // ## ## || || ## ## || Développeur : (Votre nom ici) || ## ## || Version : 1.0 Année : 2023 || ## ## || Licence : || ## ## || || ## ## \\ ---------------------------------------------- // ##
L'affichage est correcte à ce que j'attendai avec la commande "CAT".
Mais dès que je veux enregistrer le tout dans le nouveau script ..... cela coince.
Pour ce faire, j'utilise la redirection d'une commande vers un fichier ... et à partir de la ..... je perds mes espacement, qui serviront de centreur de contenu, (ces espacements sont constitué d'un ensemble de caractère espace). En clair au lieu d'avoir une dizaine d'espace à un endroit je me retrouve qu'avec un seul ... alors que la concaténation s'affiche correctement avec la commande ECHO.
pour donner un exemple :
Je code ma chaîne avec ceci : # # # # #
Affichage avec echo : # # # # #
Affichage avec CAT du fichier: # # # # #
Bref sympa comme erreur.
En cherchant un peu, j'ai trouvé un p'tit problème :
Le script que je développe est sauvegardé sur un fichier avec encodage de caractères en UTF-8 (information vérifié avec la commande FILE -i MonFichier.sh).
Par contre le nouveau fichier créé via la redirection d'ECHO, a un encodage US-ASCII .... est-ce que cela une incidence.
De plus la conversion avec la commande
ne fait aucun effet, le fichier reste sous US-ASCII.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ICONV -f US-ASCII -t UTF-8 File_Input -o File_Ouput
L'environnement de travail est sous un RaspBerry, Installé en UTF-8 et sous BASH.
Je vous joint un code edulcoré qui reproduit le défaut :
Résultat attendu à l'affichage : (Carac #)(Espace)(Espace)(Espace)(Carac #)(Espace)(Carac #)(Espace)(Carac #)(Espace)(Espace)(Espace)(Carac #)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 ## Déclaration du tableau : declare -a Tab_Header ## Déclaration des variables : Script_SH="./Result.sh" ## -- Initialisation des variables avec le code ASCII Indent_1=$(echo -e "\x20\x20\x20") ## Tabulation Indent_2=$(echo -e "\x20") ## Espace Charac_A=$(echo -e "\x23\x23") ## Character => 'dièse' ## Remplissage du tableau : Tab_Header[0]="#!/bin/bash" Tab_Header=("${Tab_Header[@]}" "-*- coding:Utf-8 -*-") Tab_Header=("${Tab_Header[@]}" "") ## -- Concaténation de la chaîne : String="${Charac_A}${Indent_2}${Indent_2}${Indent_2}${Charac_A}" String="${String}${Indent_2}${Charac_A}" String="${String}${Indent_2}${Charac_A}" String="${String}${Indent_2}${Indent_2}${Indent_2}${Charac_A}" ## Ajout de la nouvelle ligne dans le tableau : Tab_Header=("${Tab_Header[@]}" "${String}") ## Affichage à l'écran: echo "${String}" ## Sauvegarde du tableau dans le fichier : for i in ${!Tab_Header[@]} do echo ${Tab_Header[$i]} >> $Script_SH ##echo "dans le tableau $i : ${tableau[$i]}" done
DSL par avance pour les erreurs de débutants.
Et merci pour votre aide.
Partager