Problème Script Shell

Résolu
Bonjour,

Je dois faire un script qui indique si des noms d'utilisateurs passé en argument sont connectés ou non. J'ai fais ceci, mais il me retourne toujours non connecté :

#! /bin/bash
oui=true
co=false

 #pour tester tous les arguments donnés
 for user 
 do
  # on test pour chaque connecte
  for online in $(who|cut -f1 -d' ')
  do
   # si on une correspondance alors on leve un drapeau
   if (($online=$user))
   then
    co=true
   fi
  done

  # on affiche en fonction du drapeau le cas pour l'utilisateur $user
  if (($co = $oui))
  then
   echo "$user : connecté"
  else
   echo "$user : non connecté"
  fi
 done

exit 0


Avez vous des solutions ?

3 réponses

  1. Merci de vos réponses
    0
    1. Contributeur
      Salut,

      Une autre façon de voir les choses...

      #! /bin/bash
      
      for  i in $@
      do
      	w "${i}" | egrep -m 1 "^${i}" >/dev/null && echo "${i} Connecté" || echo "${i} Non connecté"
      done
      


       $ ./foo.sh jp toto
      jp Connecté
      toto Non connecté

      1
      1. salut,

        les double-parenthèses introduisent un contexte arithmétique.

        ça, c'est plus simple :
        #!/bin/bash

        args=(user1 qqchquicommenceparq user3)
        logged=( $(who | awk '{u[$1]++}END{for (i in u)print i}') )
        comm -12 <(printf '%s\n' "${logged[@]}" |sort) <(printf '%s\n' "${args[@]}" | sort)
        0