Andesi - forum

Forum francophone pour Debian

Vous n'êtes pas identifié(e).

#1 15/06/2007 15:19:49

Selmak
Membre
Lieu : Bordeaux
Inscription : 20/03/2005
Messages : 154

script shell

Salut à tous !

je voudrais faire un tout petit script shell qui fasse la chose suivante :

>sh test.sh

entrer vos nombres :
5;6;9 (par exemple)

comment je fais ensuite pour récupérer ces 3 nombres pour la suite de mon script ??

merci

Hors ligne

#2 15/06/2007 16:11:52

ledub
Membre
Lieu : Creil (60)
Inscription : 22/04/2003
Messages : 4 545

Re : script shell

D'abord il faut perdre l'habitude de nommer son oeuvre "test" car c'est une fonction déjà existante !
Pour la récupération de tes valeurs passées à l'exécution de ton script, tu as le choix :
- utilisation de $1 pour la 1ere valeur, $2 pour la suivante et ainsi de suite
- récupération de tous tes arguments par $@ que tu découpes par un awk, cut ou l'association "$1 avec shift
Personnellement je préfère la première solution.

Pour récupérer des valeurs pendant l'exécution d'un script, tu as la fonction read ${VARIABLE}

Quoiqu'il en soit, je te conseille la longue lecture du man bash

LeDub qui fait du script avant de faire l'ordinogramme !


« Ne doutez pas qu'un petit nombre de personnes déterminées puisse changer le monde. En fait, ça a même toujours marché comme ça.»
Margaret Mead
---
VeoSearch est un moteur de recherche solidaire qui permet de financer des projets associatifs de développement durable par vos recherches Internet. Utilisez-le !!!

Hors ligne

#3 15/06/2007 16:17:09

Selmak
Membre
Lieu : Bordeaux
Inscription : 20/03/2005
Messages : 154

Re : script shell

oui mais avec ton idée, ça marche si je fais :

sh toto 4 6 8

et ds ce cas $2 me donne 6.

mais si j'utilise la fonction read pour lire la réponse à une question et éviter de donner des arguments à toto,
dans ce cas c'est pas bon.

Je viens de tester ça :

#! /bin/sh
echo
echo "numbers ?"
read -a num

echo ${num[3]}

ex : 1 5 8,  la dernière ligne echo me renvoie bien 8.

par contre quelle est la fonction qui me donne la taille de ma liste ?

Dernière modification par Selmak (15/06/2007 16:38:02)

Hors ligne

#4 15/06/2007 16:35:18

y0m
Membre
Lieu : Paris
Inscription : 30/05/2003
Messages : 455
Site Web

Re : script shell

${#num[@]}

- Tu sais ce qui ferait bien sur le bar ?
- Uh ?
- TON NEZ ! *BUNK*
-+- Culture générale in GPJ: Full Throttle -+-

Hors ligne

#5 15/06/2007 16:37:48

Selmak
Membre
Lieu : Bordeaux
Inscription : 20/03/2005
Messages : 154

Re : script shell

merci

Dernière modification par Selmak (15/06/2007 16:39:22)

Hors ligne

#6 16/06/2007 15:10:18

ledub
Membre
Lieu : Creil (60)
Inscription : 22/04/2003
Messages : 4 545

Re : script shell

En ajoutant à read les noms de tes variables, tu auras dans tes variables les valeurs passées, ainsi

% echo "1 2 3 5 1009" | read V1 V2 V3 V4 V5 
% echo $V5 $V2 $V3 $V1 $V4
% 1009 2 3 1 5

Tu peux tout autant faire ce que je viens de faire avec mon script qui se nomme truc

#!/bin/bash
echo "Le script est : $0"
echo "il y a $# arguments"
IDX=0
for VAL in $@
do
        IDX=$((IDX+1))
        eval VAR_${IDX}=${VAL}
done
for ((a=$# ; a >0 ; a--))
do
        eval echo -n "$"$(echo VAR_${a})
        echo -n " "
done
echo

et qui donne cela

./truc fort trop est andesi d forum le
Le script est : ./truc
il y a 7 arguments
le forum d andesi est trop fort

LeDub qui conseille la lecture de livre Langage de scripts sous linux et le abs-guide grosse documentation disponible sur le net.


« Ne doutez pas qu'un petit nombre de personnes déterminées puisse changer le monde. En fait, ça a même toujours marché comme ça.»
Margaret Mead
---
VeoSearch est un moteur de recherche solidaire qui permet de financer des projets associatifs de développement durable par vos recherches Internet. Utilisez-le !!!

Hors ligne

#7 16/06/2007 20:20:42

Selmak
Membre
Lieu : Bordeaux
Inscription : 20/03/2005
Messages : 154

Re : script shell

pas mal .... pas mal...

Hors ligne

#8 17/06/2007 10:14:29

mathieu9512
Membre
Inscription : 27/01/2006
Messages : 263

Re : script shell

tu peux aussi utiliser d'autres langages
Python :

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re, string
# lecture d'un ligne
chaine = raw_input()
listeLettres = re.findall('[^\s]*', chaine) // il y a surement une méthode pour mieux découper mais j'ai la flemme de chercher
listeLettres.reverse()
print ' '.join(listeLettres)

PHP :

#!/usr/bin/php-cgi -q
<?php
if (!isset($GLOBALS['StdinPointer']))
{
    $GLOBALS['StdinPointer'] = fopen('php://stdin', 'r');
}
function lisUneLigne()
{
    $ligne = fgets($GLOBALS['StdinPointer'], 255);
    return trim($ligne);
}
$chaine = lisUneLigne();
$listeValeurs = explode(' ', $chaine);
echo implode(' ', array_reverse($listeValeurs));
echo "\n";

Dernière modification par mathieu9512 (17/06/2007 10:16:20)

Hors ligne

#9 17/06/2007 11:02:28

Selmak
Membre
Lieu : Bordeaux
Inscription : 20/03/2005
Messages : 154

Re : script shell

en fait mon idée était de faire un script pour du rip audio qui fait la chose suivante :

1 - lecture de la base donnée cddb
2 - récupération des infos des pistes
3 - demande des pistes à extraire
4 - extraction des pistes choisies
5 - conversion en mp3 en stockant les tag (nom de fichier, artiste, etc....) de chaque titre sélectionné.
6 - nettoyage des fichiers temporaires

voilà...ça peut paraitre ambitieux, non ??

Hors ligne

#10 18/06/2007 09:36:42

ioguix
Administrator
Lieu : Paris
Inscription : 25/04/2003
Messages : 3 945

Re : script shell


[email protected]
"Contrairement aux chasseurs qui, eux, ne sont pas des lapins, les pollueurs, eux sont des ordures. - Philippe Geluck, Le chat"
gpg: 0828C222

Hors ligne

#11 18/06/2007 10:35:20

ledub
Membre
Lieu : Creil (60)
Inscription : 22/04/2003
Messages : 4 545

Re : script shell

Selmak a écrit :

en fait mon idée était de faire un script pour du rip audio qui fait la chose suivante :

Tu sais il existe déjà un certain nombre de projets comme celui que tu veux réaliser (grip est très simple) je conçois que l'écriture de ce projet est forte intéressante.

Selmak a écrit :

1 - lecture de la base donnée cddb

En local c'est simple, les fichiers sont dans .cddb, par contre la récupération depuis la toile est certainement plus complexe

Selmak a écrit :

2 - récupération des infos des pistes

Un grep sur le fichier du disque et tu as toutes les pistes

Selmak a écrit :

3 - demande des pistes à extraire

Là je ne peux que te conseiller l'utilisation de select qui est une superbe commande très efficace pour ton cas (par contre il faudra tester avec select avec les accents, sur SunOS, j'ai quelques problèmes)

Selmak a écrit :

4 - extraction des pistes choisies

Tu as le choix de lame, bladeenc ou oggencode (enfin il me semble qu'ils se nomment ainsi)

Selmak a écrit :

5 - conversion en mp3 en stockant les tag (nom de fichier, artiste, etc....) de chaque titre sélectionné.

Là tu as mp3info ou mp3tag

Selmak a écrit :

6 - nettoyage des fichiers temporaires

J'ai un doute il se peut que la commande soit rm wink

Selmak a écrit :

voilà...ça peut paraitre ambitieux, non ??

Non parce que j'ai déjà fait ce genre de script.

LeDub qui sent qu'un Andesien va sortir un nom de langage à la gomme.

[edit]Correction de balises[/edit]

Dernière modification par ledub (18/06/2007 10:56:16)


« Ne doutez pas qu'un petit nombre de personnes déterminées puisse changer le monde. En fait, ça a même toujours marché comme ça.»
Margaret Mead
---
VeoSearch est un moteur de recherche solidaire qui permet de financer des projets associatifs de développement durable par vos recherches Internet. Utilisez-le !!!

Hors ligne

#12 18/06/2007 10:53:24

Tihz
Membre
Lieu : Paname
Inscription : 02/11/2006
Messages : 876

Re : script shell

ledub a écrit :

Tu as le choix de lame, bladeenc ou oggencode (enfin il me semble qu'ils se nomment ainsi)

J'aurais mis ceci en 5)
Pour la 4) je pencherais pour cdparanoia (ou paranoia je sais plus)

ledub a écrit :

LeDub qui sent qu'un Andesien va sortir un nom de langage à la gomme.

Windev ! J'ai bon ?


Ce qu'il y a de bien avec les standards, c'est qu'il y en a beaucoup entre lesquels choisir.

Hors ligne

#13 18/06/2007 12:44:42

y0m
Membre
Lieu : Paris
Inscription : 30/05/2003
Messages : 455
Site Web

Re : script shell

Selmak a écrit :

en fait mon idée était de faire un script pour du rip audio qui fait la chose suivante :

1 - lecture de la base donnée cddb
2 - récupération des infos des pistes
3 - demande des pistes à extraire
4 - extraction des pistes choisies
5 - conversion en mp3 en stockant les tag (nom de fichier, artiste, etc....) de chaque titre sélectionné.
6 - nettoyage des fichiers temporaires

voilà...ça peut paraitre ambitieux, non ??

Non pas du tout, c'est meme l'occasion revee de te mettre a perl :
1 - lecture de la base donnée cddb
2 - récupération des infos des pistes
3 - demande des pistes à extraire
4 - extraction des pistes choisies
5 - conversion en mp3 en stockant les tag (nom de fichier, artiste, etc....) de chaque titre sélectionné. (etape 6 inutile, geree a l'etape 5)


- Tu sais ce qui ferait bien sur le bar ?
- Uh ?
- TON NEZ ! *BUNK*
-+- Culture générale in GPJ: Full Throttle -+-

Hors ligne

#14 18/06/2007 23:03:14

Selmak
Membre
Lieu : Bordeaux
Inscription : 20/03/2005
Messages : 154

Re : script shell

merci bcp les amis pour toutes ces infos !

Hors ligne

Pied de page des forums