IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script Bash pour changer fichier par itération


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut Script Bash pour changer fichier par itération
    Bonjour,

    J'aimerais faire un script bash qui, en itérant :

    - ouvre un fichier en csh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/csh 
    #output file
    set ps=energy.ps
    #time step to plot
    set ts=230
    [...]
    - change la valeur de ts de +10 (par exemple)

    - lance le csh

    - enregistre le plot qui en résulte (donc changer de nom de la figure avec l'incrément)

    - et recommence autant de fois désiré.

    Une idée pour me lancer?

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    j'ai déjà commencé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
    for ((i = 000; i <= 700; i += 50))
    do
    echo $i
     
     
    sed -i 's/^set ts=.*/set ts=666/' filename
    grep '^set ts=' filename || { echo; echo 'set ts=666'; } >>filename
     
    done
    mais je pense que je vais avoir du mal pour l'itération et l'enregistrement de la figure.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    Bonjour,

    Un peu barbare, la méthode ici, je te suggère de modifier ton script csh pour qu'il puisse prendre des paramètres au lieu de le modifier avant exécution.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Merci pour ta réponse mais je trouve encore moins d'aide en csh qu'en bash.

    Rien que pour faire les entrées et la boucle j'ai du mal,

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/csh 
    echo "entree temps max en sec (<1000)"
    set max_iter = $<
    echo "entree le pas de temps en sec"
    set pas_iter = $<
    set iter=0
     
     
    while ($iter<$max_iter)
    echo $iter
    set iter=`exp $iter + 1`
    end
    il me ressort "0 illegal variable name.."

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par Newenda Voir le message
    Merci pour ta réponse mais je trouve encore moins d'aide en csh qu'en bash.
    Ça ne m'étonne pas!

    Es-tu certain de vouloir absolument le faire en csh?

    Rien que pour faire les entrées et la boucle j'ai du mal,

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/csh 
    echo "entree temps max en sec (<1000)"
    set max_iter = $<
    echo "entree le pas de temps en sec"
    set pas_iter = $<
    set iter=0
     
     
    while ($iter<$max_iter)
    echo $iter
    set iter=`exp $iter + 1`
    end
    il me ressort "0 illegal variable name.."
    Bizarre...

    Chez moi, les entrées et la boucle fonctionnent bien (après avoir changé "exp" en "expr" et "+ 1" en "+ $pas_iter")

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    C'est peut-être aussi l'occasion de changer le csh en un shell plus dans l'air du temps...

    Que fait au juste ce script csh ?
    Est-il si lourd à transformer en un shell de style sh, ksh, ou bash ?

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Attention: les nombres commençant par le chiffre '0' sont considérés comme étant écrits en octal, ce qui peut changer leur valeur (sauf pour le nombre '0'). Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ for ((i = 000; i <= 0700; i += 050)); do echo $i; done
    0
    40
    80
    120
    160
    200
    240
    280
    320
    360
    400
    440
    Il faut utiliser les guillemets (double quotes) pour pouvoir utiliser la valeur d'une variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    filename="./filename"
    for ((i = 0; i <= 700; i += 50))
    do
      echo $i
      sed -i "s/^set ps=.*/set ps=energy-$i.ps/; s/^set ts=.*/set ts=$i/" ${filename}
      # lancement de la commande?
      ${filename}
    done
    Mais je plussoie la remarque de disedorgue: il vaudrait mieux passer $i en argument au script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    filename="./filename"
    for ((i = 0; i <= 700; i += 50))
    do
      echo $i
      # lancement de la commande?
      ${filename} $i
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/csh
    set i=$1
    #output file
    set ps=energy-$i.ps
    #time step to plot
    set ts=$i
    [...]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script bash pour correspondance entre fichiers .DOT (GraphViz)
    Par Miel56 dans le forum Administration système
    Réponses: 1
    Dernier message: 17/02/2015, 16h01
  2. Script bash pour parcourir la variable Path
    Par harris_macken dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 13/02/2008, 22h15
  3. Script bash pour grub
    Par mplcd dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 04/12/2007, 12h44
  4. Réponses: 1
    Dernier message: 09/02/2007, 22h51
  5. script windows pour copier fichier
    Par sacan dans le forum Windows
    Réponses: 3
    Dernier message: 09/06/2006, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo