Erreur operteur uninaire attendu

Résolu/Fermé
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 - Modifié par jipicy le 13/03/2016 à 22:53
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 - 15 mars 2016 à 00:23
Bonsoir,
Je veux créer un script qui à partir d'un fichier text possedant des nom de post et adresses ip,fais des pings successive pour voir au finish un fichier texte dans lequel se trouve toutes les adresses IP online,voici mon script:
#!/bin/bash
touch my_ips_online.txt
for ip in $(cat /mes_scripts/adresses.txt |cut -d " " -f 2);do
  if [ $(ping -c 1 $ip |grep "tll"|cut -d " " -f 6) == "ttl"];then
   ping -c 1 $ip|grep "ttl"|cut -d ":" -f 1|cut -d " " -f 4 »my_ips_online.txt
  elif [ $(ping -c 1 $ip |grep "Unreachable"|cut -d " " -f 6) == "Unreachable"];then
   echo "Hote hors ligne"
 fi
done



Et j'ai un message d'erreur me disant:
./monfichier.sh: ligne 5 :[:==:Operateur uninaire attendu

Et même message pour la ligne 7,d'où vient l'erreur,merci pour votre aide.

3 réponses

Salut,

Avec un seul "[" il faut seulement un signe "=".
De plus, il faut un espace de part et d'autre du caractère "[" ou "]".
1
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 10
15 mars 2016 à 00:23
Merci beacoup,ca marche maintenant
0
Utilisateur anonyme
14 mars 2016 à 11:10
"ttl" et pas "tll"

Sinon tu peux utiliser le ping une seule fois :


#!/bin/bash
rm -f online
for ip in `cat a | cut -d\ -f2`
do
ping -c 1 $ip > /dev/null
if [ "$?" = "0" ];then
echo "$ip : connecté" >> online
else
echo "$ip : hors ligne"
fi
done
1
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 10
Modifié par chrisee le 15/03/2016 à 00:24
J'ai finalement vu l'origine de l'erreur c'est la ligne 4 et 6 je devais ajouter un des crochets supplemenataires


#!/bin/bash
touch my_ips_online.txt
for ip in $(cat /mes_scripts/adresses.txt |cut -d " " -f 2);do
if [[ $(ping -c 1 $ip |grep "ttl"|cut -d " " -f 6) == "ttl"]];then
ping -c 1 $ip|grep "ttl"|cut -d ":" -f 1|cut -d " " -f 4 »my_ips_online.txt
elif [[ $(ping -c 1 $ip |grep "Unreachable"|cut -d " " -f 6) == "Unreachable"]];then
echo "Hote hors ligne"
fi
done
0