Problème Script Shell

Résolu
Axaron Messages postés 28 Statut Membre -  
Axaron Messages postés 28 Statut Membre -
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. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. Utilisateur anonyme
     
    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
  3. Axaron Messages postés 28 Statut Membre 1
     
    Merci de vos réponses
    0