Forum Programmation.shell Mettre en commentaire une liste de varaibles dans plusieurs scripts

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
11
fév.
2020

Bonjour,

j'ai une liste d'une trentaine de variable à mettre en commentaire dans des scripts

ex de variables :
DATA_FILES
PROJ_TOP
EXP_LOG

ces variables sont utilisés dans les scripts

il faut mettre en commentaire que les lignes commençant par ces variables

ex de script

## -- Déclaration des variables d'environnement -- ##
ORG_NAME=toto
DATA_FILES=/proddata/toto/batch
PROJ_TOP=/prodapp/toto/batch/current/

JOB=`basename $0 .sh`
DATESTAMP=`date +%Y%m%d_%H%M%S`
EXP_LOG=/apps/exploit/tng/${ORG_NAME}/logs
## -- Déclaration du journal du script -- ##
exec  >>$EXP_LOG/${DATESTAMP}_$JOB.$$.log
exec 2>>$EXP_LOG/${DATESTAMP}_$JOB.$$.log

echo "ETAPE 00 [$(date)] : Déclarations des variables ($$)"
IDF=P01000
CONCAT=concat_
PATTERN=SSDDREJ_*_007
EXTENSION=
REPRISE=N
CFTSRC="$(find /proddata/${ORG_NAME} -name "sas" -type d -prune)/out/flucro"

j'ai essayé cette commande mais il modifie la varaible dans tout le script

sed -i '/ORG_NAME/ s/^/# /' Nom_du_script
  • # sed et premiere occurence

    Posté par  (site web personnel) . Évalué à 2.

    j'ai essayé cette commande mais il modifie la varaible dans tout le script

    Il existe un syntaxe de GNU sed pour s'arrêter à la première occurrence:

    sed -i '/ORG_NAME/ s//# /' Nom_du_script
    # should be
    sed -i '0,/ORG_NAME/ s/ORG_NAME/# ORG_NAME/' Nom_du_script
    • [^] # Re: sed et premiere occurence

      Posté par  . Évalué à 3.

      Personnellement, dans la mesure du possible, si mon fichier n'est pas géré par un gestionnaire de versions, j'évite le sed -i. Je fais mon sed vers un autre fichier temporaire, je contrôle que j'ai bien ce que je veux, et ensuite je déplace le fichier vers l'ancien. Ca évite des erreurs du style expression régulière trop large qui remplace plus d'occurences que nécessaire.

  • # Commençant ou contenent ?

    Posté par  . Évalué à 1.

    Salut,

    il faut mettre en commentaire que les lignes commençant par ces variables

    Toutes les lignes commençant par ces variables ou toutes les lignes contenant ces variables ?

    Parce que ce n'est pas pareil ;-\

    Cette syntaxe commente toutes les lignes commençant par les 3 variables sus-citées :

    sed '/^\(DATA_FILES\|PROJ_TOP\|EXP_LOG\)/ s/^/# /' fich

    Celle-là, toutes les lignes contenant les 3 variables :

    sed '/DATA_FILES\|PROJ_TOP\|EXP_LOG/ s/^/# /' fich

  • # no upper case !

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    Salut,

    en shell il est déconseillé d'utiliser des variables en MAJUSCULES, car elle sont réservées au système.

    Ça va fonctionner, jusqu'au jour où tu va t'arracher les cheveux par ce que tu aura pris une variable $SECONDS par exemple. (temps écoulé depuis l'ouverture du shell courant).

    ++sputnick;

    On ne peut pas mettre d'array dans le string...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.