Probleme script

Bonsoir à tous,

j'ai un souci, je découvre les scripts sous linux et je dois faire un script qui me donne le nombre de bash ouvert par un utilisateur. Le souci est que lorsque je lance mon script il m'en compte un de plus que prévu car en lançant le script ça ouvre un bash supplementaire. Donc je voudrais le retirer dans mon script. J'ai alors créé ce script

read a
var = ps -u$a | grep -c bash
let var = $var - 1
echo $var

et lorsque je lance le script j'ai 2 erreurs

scr1: line 2: var : commande introuvable
0
scr1: line 3: let: =: erreur de syntaxe : opérande attendue (error token is "=")

où scr1 est le nom de mon script . Si quelqu'un a la solution ça serait super ^^ et si en plus quelqu'un pouvait me proposer un lien pour en apprendre plus sur tout ceci :) merci d'avance
Configuration: Linux
Firefox 3.0.15

7 réponses

  1. je crois que t'as oublié le slash.... ou pas
    0
    1. Modérateur
      Salut,

      Attention, avant et après le signe égal il n'y a pas des espaces

      read a
      var=ps -u $a | grep -c bash
      var=$(($var - 1))
      echo $var

      0
      1. Sous linux, c'est readdir, pas read
        0
        1. Modérateur
          Salut,

          Je suis sous linux.
          read permet de lire une variable saisie au clavier.
          0
      2. merci beaucoup ça m'a grandement aidé!!

        j'ai trouvé ceci donc :

        read a
        var=`ps -u $a | grep -icw bash`
        var=$(($var-2))
        echo $var

        et je suis obligé de mettre 2 car ... (en fait j'en sais rien ... ) si quelqu'un a une idée
        0
        1. Modérateur
          Re,

          Oups, j'ai oublié pour la capture, mais je vois que tu as trouvé.
          Tu peux utiliser aussi $(commande) ou lieu de $``

          read a
          var=$(ps -u $a | grep -icw bash)
          var=$(($var-2))
          echo $var
          0
      3. merci a tous et lami20j ^^

        je ne comprends pas encore pourquoi je dois mettre -2 mais au moins ça tourne!!! merci beaucoup
        0
        1. je reviens vous voir car j'ai encore un souci qui je pense est lié au précédent.

          je m'occupe de creer un script qui me permet de modifier mon PATH pour y inclure mon rep courant et le rep de mes scripts comme ceci :

          [quote]
          var=$PATH

          if [ $var != $(cat /home/yardras/workspace/abc/script/.demarrage_path) ]
          then
          echo PATH different
          echo en attente de modification
          PATH=$(cat .demarrage_path)
          export PATH

          echo PATH modifié
          else
          echo PATH identique
          fi
          [\quote]

          puis je cree un autre script qui me remet mon PATH originel :

          [quote]
          PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
          export PATH
          echo PATH réinitialisé
          [\quote]

          quand j'execute alors en tapant " . nom_script1" le PATH change mais quand je fais ensuite "nom_script2" le PATH ne change pas. Je pense qu'il n'exporte le PATH que dans les sous-bash lié au bash qui s'ouvre quand j'execute de la 2eme façon.

          si je suis assez clair, cela veut dire qu'une execution en "nom_script" se fait a travers un autre bash et l'exportation du PATH ne se fait que pour celui-ci alors qu'une execution en ". nom_script" se fait <autrement> .

          et donc je ne comprends pas pourquoi et aussi comment regler le probleme.

          si quelqu'un peut m'expliquer ;) merci d'avance
          0
          1. excusez-moi de up ce topic mais je ne trouve pas la réponse depuis hier....
            0