Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/02/2010, à 01:43

JB-home

argument $3 faisant appel à un fichier texte.

voilà je débute en script shell,
mon script fonctionne comme ça :

monscript.sh arg1 arg2 arg3

arg1 = un nombre = $1
arg2 = un lien = $2
arg3 = un fichier texte =$3


je voudrais qu'une ligne prit au hasard dans se fichier texte soit placé en $3

then
export http_proxy='$3'
while [ "$var0" -lt "$var1" ]
do
opera $2
let "var0 += 1"
done
export http_proxy=''

autre petit question , j'aimerais afficher zenity avec une fenêtre d'erreur lorsque un des arguments n'est pas renseigné ? ( la fenêtre d'erreur je sait la faire biensûr )



merci de votre aide


edit : je doit voir du coté de "cat" et "grep" pour lire aléatoirement une ligne du fichier.txt( qui est $3 ) et renvoyé le résultat à $4   ?  de la façon :

`cat $3 | grep une_ligne_au_hasard`=$4

Dernière modification par zorg-green (Le 07/02/2010, à 01:53)

Hors ligne

#2 Le 07/02/2010, à 02:25

AnsuzPeorth

Re : argument $3 faisant appel à un fichier texte.

Bjr,
Tu veux envoyer la ligne du fichier en argument ?
C'est peut être plus simple de récupérer cette ligne dans le script.

ligne_hazard=$(sort -R ./fichier.txt | head -n1)

Pour vérifier le nombre d'argument, il y a une commande prévu pour traiter les arguments (getopt, je connais pas trop !).
Pour récupérer le nombre d'arguments du script sans getopt:

#! /bin/bash
nb_arg=$#

Tu peux faire comme suit, mettre les arguments dans un tableau par exemple:

#! /bin/bash
tab=( $@ )
arg1=${tab[0]}
arg2=${tab[1]}
arg3=${tab[2]}
nb_args=${#tab[@]}
[ "$nb_args" != 3 ] && zenity --error
ligne_hazard=$(sort -R "$arg2" | head -n1)

C'est une solution, il y en a d'autres, bien sur !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 07/02/2010, à 02:53

JB-home

Re : argument $3 faisant appel à un fichier texte.

merci de ton aide,

voilà le retour de sort :

./clikor 1 http://monip.org  proxylist.txt
sort: échec de transformation de chaîne: Aucun fichier ou dossier de ce type
sort: définir LC_ALL=«C» pour contourner le problème.
sort: la chaîne non transformée était `'

Dernière modification par zorg-green (Le 07/02/2010, à 02:55)

Hors ligne

#4 Le 07/02/2010, à 03:08

AnsuzPeorth

Re : argument $3 faisant appel à un fichier texte.

Tu as récupéré le bon argument, mes exemples n'était que des exemples... Il faut adapter !
Si tu n'as pas modifié mes propositions et en lancant ton script comme tu l'indique, le fichier est en troisième position, donc :

sort -R "$arg3" | head -n1

Mais tu n'es pas obligé de passer par un tableau, les arguments se récupéreront $1 $2 $3 ....

#! /bin/bash
nb_arg=$#
[ "$nb_args" != 3 ] && zenity --error
ligne_hazard=$(sort -R "$3"  | head -n1)

Dernière modification par AnsuzPeorth (Le 07/02/2010, à 03:08)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 07/02/2010, à 03:28

JB-home

Re : argument $3 faisant appel à un fichier texte.

ligne_hazard=$(sort -R "$3"  | head -n1)

mais là il va m'affiché la ligne 1 ?

je cherche à affiché une ligne au hasard

Dernière modification par zorg-green (Le 07/02/2010, à 03:31)

Hors ligne

#6 Le 07/02/2010, à 03:34

AnsuzPeorth

Re : argument $3 faisant appel à un fichier texte.

zorg-green a écrit :

ligne_hazard=$(sort -R "$3"  | head -n1)

mais là il va m'affiché la ligne 1 ?

je cherche à affiché une ligne au hasard

Tu as essayé ??? L'option -R de sort pour un tri aléatoire.... man sort !

Mais si tu comptes faire ce que je pense (cf le sujet supprimé  y a pas longtemps), je pense que tu perds ton temps, il faudrait coder qqlechose de plus sérieux pour y arriver sans se faire prendre ! (sans être sur que ce soit possible, je connais pas la prog web, mais bon, faut pas les prendre pour des cons wink)

ps: j'ai fait un script y a pas longtemps pour tester les proxys justement,
http://forum.ubuntu-fr.org/viewtopic.php?id=376715

Dernière modification par AnsuzPeorth (Le 07/02/2010, à 03:36)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 07/02/2010, à 03:42

JB-home

Re : argument $3 faisant appel à un fichier texte.

ah d'accord j'ai juste lu le man de head , j'ai pas pensé à sort...

et pour le reste je pense aussi qu'ils sont équipé pour contré se genre de truc mais ça me permet de comprendre un script...

donc avec "sort" j'ai toujours la même erreur.

Dernière modification par zorg-green (Le 07/02/2010, à 03:43)

Hors ligne

#8 Le 07/02/2010, à 04:14

AnsuzPeorth

Re : argument $3 faisant appel à un fichier texte.

Le fichier se trouve où ??? Mets le chemin complet pour voir. L'erreur signale que sort ne trouve pas le fichier !
J'ai fait des essais et ca fonctionne correctement (le fichier est bien encodé, il ne vient pas de je ne sais où ?)

Dernière modification par AnsuzPeorth (Le 07/02/2010, à 04:16)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#9 Le 07/02/2010, à 04:29

JB-home

Re : argument $3 faisant appel à un fichier texte.

ligne_hazard=$(sort -R "$3" | head -n1)

je tape dans un terminal (où se citu le clikor et proxylist.txt ) :

zorg@zorg-ubuntu:~/script/mon projet/beta-test$ ./clikor 1 http://monip.org  proxylist.txt
sort: échec de transformation de chaîne: Aucun fichier ou dossier de ce type
sort: définir LC_ALL=«C» pour contourner le problème.
sort: la chaîne non transformée était `'
zorg@zorg-ubuntu:~/script/mon_projet/beta-test$ ./clikor 1 http://monip.org  /home/zorg/script/mon_projet/beta-test/proxylist.txt
sort: échec de transformation de chaîne: Aucun fichier ou dossier de ce type
sort: définir LC_ALL=«C» pour contourner le problème.
sort: la chaîne non transformée était `'

Hors ligne

#10 Le 07/02/2010, à 04:33

JB-home

Re : argument $3 faisant appel à un fichier texte.

c'est bon ça fonctionne.... merci bcp


bon bin autre problème ...

export http_proxy='$ligne_hazard'

$ligne_hazard et lu comme du texte et pas comme un argument ...

même sans les '   '

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

résolu :

ligne_hazard=(http_proxy=$(sort -R "$3" | head -n1))

Dernière modification par zorg-green (Le 07/02/2010, à 05:02)

Hors ligne