Script shell: fichier texte dans une variable

ploue -  
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   -
salut a tous;

voilà, je cherche comment mettre le contenu d'un fichier texte dans une variable de mon script shell. (je débute..)

j'ai googloté en vain. (mal ?)

j'aimerais aussi savoir s' il est possible d'invoquer le module GTK dans le script, pour ce passer, dans ce cas, de languages comme perl ou python pour gerer des fenêtres.

merci :)

ps: si vous voulez en savoir plus je peux aussi vous décrire mon projet.

10 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    le contenu d'un fichier texte dans une variable de mon script shell

    var=$(cat fichier)
    echo $var
    14
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    ps: si vous voulez en savoir plus je peux aussi vous décrire mon projet.
    Sans aller jusque là (quoi que si ça te fait plaisir...), mais explique davantage ce que tu entends par "je cherche comment mettre le contenu d'un fichier texte dans une variable" !!??
    Donnes-nous un exemple concret.

    Pour ce qui est de "gerer des fenêtres", si c'est de fenêtres de dialogues dont tu causes, regarde du côté de "Xdialog" (ou dialog en mode "ncurses") pour KDE (tu trouveras un petit exemple là) et de "Zenity" pour Gnome.

    ;-))
    1
  3. Julie
     
    Alors mon problème venait du fait que dans monfichiertexte mon chiffre était suivi d'un retour chariot.
    Une fois celui-ci enlevé, cela fonctionne !
    Et voici à la lumière de vos remarques le code qui fonctionne pour lire ce chiffre, l'incrémenter et le réécrire; tout simplement :

    nb=$(cat monfichiertexte)
    nb=$((nb+1))
    echo $nb > monfichiertexte

    Merci à tous.
    1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Julie
     
    Et comment faire pour ensuite pouvoir considérer cette variable comme un entier et pouvoir l'incrémenter ?
    nb=$((nb+1)) ne fonctionne pas par exemple
    Merci.
    0
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Et
    nb=$(expr $nb + 1)
    ça donne quoi ?

    Sinon, ta variable elle ressemble à quoi ? et elle sort d'où ?

    Pour ton problème essaie plutôt :
    nb=$(($nb+1))
    ;-)
    0
  7. Julie
     
    Merci.

    En fait la variable vient d'un fichier texte contenant un chiffre.
    On le lit avec un "cat nomdufichier.txt"
    L'echo de cette variable fonctionne bien et affiche 1

    Par contre j'ai essayé les deux expressions que tu m'indiques et cela me donne une erreur due au type chaine que l'on essaie d'incrémenter.
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      re-

      Affiche-nous le résultat de la commande :
      cat ton_fichier
      Merci ;-)
      -1
  8. Benj
     
    b=`cat truc`  //fichier truc contient 1
    a=$(($b+1))
    echo $a
    2
    


    ca marche en bash ca non ?
    0
    1. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
       

      ca marche en bash


      Ce qui marche en bash marche généralement en sh ;-)
      0
      1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659 > Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention  
         
        hello
        je dirais plutot le contraire, ce qui fonctionne en sh fonctionne en bash
        cette ligne fonctionne en bash mais pas en sh
        $ export DATE=$(date)
        cette ligne fonctionne en bash et en sh
        $ DATE=`date`; export DATE
        0
      2. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        je dirais plutot le contraire, ce qui fonctionne en sh fonctionne en bash

        Ah oui, pardon pour l'erreur ;-)
        0
  9. Arnauld
     
    Bonjour,

    Est-ce qu'il est possible de faire la même chose en DOS ?

    Merci.
    0
    1. Matimat
       
      Comme je cherchais aussi, je poste ici la réponse, même si cela date !

      Au moins, ceux qui chercherons aussi seront content !

      voici la solution en ligne de commande pour windows !

      En ligne de commande :
      for /f %i in ('type C:\texte.txt') do set var=%i

      Dans un script :
      for /f %%i in ('type C:\texte.txt') do set var=%%i

      Ainsi la commande for va chercher le résultat du premier ensemble de caractère (%i) qui s'affiche grace à la commande "type", et va mettre ce résultat dans la variable "var"
      0