Problème Script Shell

Résolu/Fermé
Axaron Messages postés 25 Date d'inscription jeudi 8 octobre 2015 Statut Membre Dernière intervention 27 mars 2016 - Modifié par jipicy le 14/11/2015 à 20:24
Axaron Messages postés 25 Date d'inscription jeudi 8 octobre 2015 Statut Membre Dernière intervention 27 mars 2016 - 15 nov. 2015 à 09:16
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 ?
A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
14 nov. 2015 à 23:58
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
Utilisateur anonyme
14 nov. 2015 à 22:04
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
Axaron Messages postés 25 Date d'inscription jeudi 8 octobre 2015 Statut Membre Dernière intervention 27 mars 2016 1
15 nov. 2015 à 09:16
Merci de vos réponses
0