Problème Script Shell [Résolu/Fermé]

Signaler
Messages postés
25
Date d'inscription
jeudi 8 octobre 2015
Statut
Membre
Dernière intervention
27 mars 2016
-
Messages postés
25
Date d'inscription
jeudi 8 octobre 2015
Statut
Membre
Dernière intervention
27 mars 2016
-
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

Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 225
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


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)
Messages postés
25
Date d'inscription
jeudi 8 octobre 2015
Statut
Membre
Dernière intervention
27 mars 2016
1
Merci de vos réponses