#26 Le 21/08/2012, à 15:04
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Il ne manque pas quelque chose ?
rm -rf 141.28.98.*
non ?
Hors ligne
#27 Le 21/08/2012, à 15:06
- Hizoka
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
lis le man et tu sauras que :
-r : enlever le contenu des répertoires récursivement
-f : ignorer les fichiers inexistants, ne pas demander de confirmation
Dernière modification par Hizoka (Le 21/08/2012, à 15:06)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#28 Le 21/08/2012, à 15:09
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Ah ok
Mais quand je met
rm 141.28.98.x
dans le programme j'ai l'erreur suivante:
./final.sh: line 8: : No such file or directory
pourquoi cette erreur ?
Hors ligne
#29 Le 21/08/2012, à 15:12
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
C'est que ce fichier n'existe pas, ou qu'il n'est pas dans le répertoire courant.
Ajouté : Tu n'aurais mas mis un x à la place de *, par hasard ?
Dernière modification par pingouinux (Le 21/08/2012, à 15:15)
Hors ligne
#30 Le 21/08/2012, à 15:28
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Non mais c'est quand le fichier n'existe pas
Hors ligne
#31 Le 21/08/2012, à 15:30
- credenhill
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
utiliser
rm -f 141.28.98.x
Hors ligne
#32 Le 21/08/2012, à 15:38
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
J'ai bien mis
rm -f 141.28.98.*
Mais malgré cela sa me met un erreur alors que j'ai bien des fichiers existants
Hors ligne
#33 Le 21/08/2012, à 15:44
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Dans ton script, ajoute ces 2 lignes (avant le rm) :
pwd
ls -lb 141.28.98.*
Hors ligne
#34 Le 21/08/2012, à 15:46
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Voici la réponse:
-rw-r--r-- 1 root root 31 2012-08-21 16:34 141.28.98.11
-rw-r--r-- 1 root root 21 2012-08-21 16:34 141.28.98.13
-rw-r--r-- 1 root root 39 2012-08-21 16:34 141.28.98.14
-rw-r--r-- 1 root root 71 2012-08-21 16:34 141.28.98.15
./final.sh: line 11: : No such file or directory
./final.sh: line 11: : No such file or directory
Hors ligne
#35 Le 21/08/2012, à 15:50
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Tu n'as pas la permission sur les fichiers, sauf si ton script s'exécute en root. Essaye :
sudo ./final.sh
Attention, avec sudo, il faut être très prudent.
Hors ligne
#36 Le 21/08/2012, à 15:51
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Oui j'exécute le fichier en root pourtant
sudo ./final.sh
/home/clientTestScript
-rw-r--r-- 1 root root 15 2012-08-21 16:43 141.28.98.11
-rw-r--r-- 1 root root 10 2012-08-21 16:43 141.28.98.13
-rw-r--r-- 1 root root 19 2012-08-21 16:43 141.28.98.14
-rw-r--r-- 1 root root 35 2012-08-21 16:43 141.28.98.15
./final.sh: line 11: : No such file or directory
./final.sh: line 11: : No such file or directory
Hors ligne
#37 Le 21/08/2012, à 16:02
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Oui, j'ai dit une bêtise, car si mon diagnostic avait été le bon, on aurait plutôt eu le message "Permission denied".
Essaye de mettre :
set -x
en tête de ton script.
Hors ligne
#38 Le 21/08/2012, à 16:04
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
voici le résultat
./final.sh
+ pwd
/home/client/TestScript
+ ls -lb 141.28.98.11 141.28.98.13 141.28.98.14 141.28.98.15
-rw-r--r-- 1 root root 15 2012-08-21 16:49 141.28.98.11
-rw-r--r-- 1 root root 10 2012-08-21 16:49 141.28.98.13
-rw-r--r-- 1 root root 19 2012-08-21 16:49 141.28.98.14
-rw-r--r-- 1 root root 35 2012-08-21 16:49 141.28.98.15
+ rm -f 141.28.98.11 141.28.98.13 141.28.98.14 141.28.98.15
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.15 ]]
+ echo -n client
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.11 ]]
+ echo -n Client2
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.15 ]]
+ echo -n ,Client3
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.14 ]]
+ echo -n MonClient2
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.13 ]]
+ echo -n MonClient3
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.11 ]]
+ echo -n ,MonTest
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.15 ]]
+ echo -n ,Example
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.14 ]]
+ echo -n ,Example2
+ IFS=:
+ read client ip
+ [[ ! -f 141.28.98.15 ]]
+ echo -n ,testOwnCloud
+ IFS=:
+ read client ip
+ [[ ! -f '' ]]
+ echo -n ''
./final.sh: line 12: : No such file or directory
+ echo -n ,
./final.sh: line 12: : No such file or directory
+ IFS=:
+ read client ip
Hors ligne
#39 Le 21/08/2012, à 16:17
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Il y a plein de choses dans ton script. Est-il possible de le voir ?
+ read client ip
+ [[ ! -f '' ]]
+ echo -n ''
./final.sh: line 12: : No such file or directory
Ces chaînes vides sont-elles voulues ?
Ajouté :
Pour info :
$ rm ""
rm: cannot remove `': No such file or directory
Dernière modification par pingouinux (Le 21/08/2012, à 16:41)
Hors ligne
#40 Le 21/08/2012, à 18:13
- Hizoka
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
avant ton rm ajoute :
echo "Suppression des fichiers : ${ip}"
ainsi on verra vite si la variable est bonne
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#41 Le 22/08/2012, à 08:11
- credenhill
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
il faut enlever la , après le dernier nom
awk -F":" '{ip[$2]=ip[$2] $1 "," END{for(n in ip){sub(",$", "", ip[n]); print ip[n] > n}}' file.txt
on peut simplifier
awk -F":" '{ip[$2]++? c=",": c=""; printf c $1 > $2}' file.txt
Hors ligne
#42 Le 22/08/2012, à 09:06
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Il y a plein de choses dans ton script. Est-il possible de le voir ?
+ read client ip + [[ ! -f '' ]] + echo -n '' ./final.sh: line 12: : No such file or directory
Ces chaînes vides sont-elles voulues ?
Ajouté :
Pour info :$ rm "" rm: cannot remove `': No such file or directory
Bonjour à tous,
Voici le code:
#!/bin/bash
set -x
pwd
ls -lb 141.28.98.*
rm -f 141.28.98.*
# Boucle traitant les lignes une à une du fichier
while IFS=':' read client ip;
do
# On envoie le nom du client dans un fichier au nom de l'ip
# Si le fichier ip n'existe pas on envoie une valeur sans virgule sinon on envoie une virgule precedant la valeur
[[ ! -f ${ip} ]] && echo -n "${client}" >> "${ip}" || echo -n ",${client}" >> "${ip}"
done < file.txt
Je vais rajouter la commande suivante:
echo "Suppression des fichiers : ${ip}"
afin de voir ce qui se passe et je vous envoie le résultat
Hors ligne
#43 Le 22/08/2012, à 09:12
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Bonjour,
Ce matin j'ai décidé de tester sur un autre ordinateur et la je n'ai aucune erreur comme cela
./final.sh: line 8: : No such file or directory
Est ce normal?
Hors ligne
#44 Le 22/08/2012, à 09:24
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Bonjou Ariania,
Voici ce que j'obtiens quand ip est une chaîne vide (se produit aussi si file.txt contient des lignes vides) :
+ IFS=:
+ read client ip
+ [[ ! -f '' ]]
+ echo -n client3
./final.sh: line 12: : No such file or directory
+ echo -n ,client3
./final.sh: line 12: : No such file or directory
Hors ligne
#45 Le 22/08/2012, à 09:25
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Ah ok mais mon fichier file.txt ne contient pas de lignes vides.
Hors ligne
#46 Le 22/08/2012, à 09:33
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Ça peut être une ligne mal formée (absence de ":" , par exemple). Pour t'en assurer, tu peux imprimer les valeurs en tête de la boucle :
wile .....
do
echo client="$client"=
echo ip="$ip"=
..........
done <.....
Hors ligne
#47 Le 22/08/2012, à 09:38
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Voici le résulat:
client=client=
ip=141.28.28.25=
client=Client2=
ip=141.28.28.21=
client=Client3=
ip=141.28.28.25=
client=MonClient2=
ip=141.28.28.24=
client=MonClient3=
ip=141.28.28.23=
client=MonTest=
ip=141.28.98.11=
client=Example=
ip=141.28.28.25=
client=Example2=
ip=141.28.28.24=
client=testOwnCloud=
ip=141.28.28.25=
Hors ligne
#48 Le 22/08/2012, à 09:46
- pingouinux
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
L'information est intéressante en cas de message d'erreur. Il faut faire le test sur l'ordinateur où ça plante.
Ça n'a rien à voir, mais ici ip=141.28.28.25=, et dans ton script du #42, c'était 141.98.28.*. Est-ce voulu ?
Hors ligne
#49 Le 22/08/2012, à 09:48
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
non je voulais 141.28.98.* au début mais les machines changent de cloud donc je vais carrément mettre 141.28.* je pense que sa ira
Hors ligne
#50 Le 22/08/2012, à 10:15
- Ariania
Re : Découpage de chaine de caractères et comparaison en SHELL [Résolu]
Mais je pense qu'à part sa tout fonctionne je pense que c'est bon
Je vais devoir recoller tous les bouts de code ensemble.
Je voudrais avoir un autre renseignement est ce que vous aider aussi en JAVA ?
Hors ligne