Petit script shell sous linux

voila une petite parti de mon script de test

foreach sourcefile (/home/moi/image/*.jpg)
echo sourcefile

et ce con me dit :
syntaxe error near unexpected token '(/'

grrr!!!

bon oki chui novice en shell machin mais kes qu'il veut ??

--
mr poussy

5 réponses

  1. Modérateur
    Pour parcourir une arborescence de fichiers, utilise la commande find ( ENORMEMENT d'options)
    exemple sous bash
    #!/bin/bash
    function mamanip(){
    [ "$1X" != "X" ] && file $1
    }

    OLDIFS=$IFS
    #on utilise : comme séparateur
    # $1 est le paramètre du script , normalement le nom d'un répertoire
    LIST=$(find $1 -type f -printf "%p:" )

    # éviter les espaces dans les noms de fichiers le caractère ":" normalement pas
    # conseilé dans les noms de fichier UNIX
    IFS=":"
    for file in $LIST ; do
    mamanip $file
    done
    # rétablir IFS
    IFS=$OLDIFS

    Gates gave us the windows.
    Linux gave us the whole house....
    1. Modérateur
      ca y est ca marche

      je n'avais pas defini le bon shell

      il fallait que j'ecrive

      #!/bin/tcsh

      c tout :)

      hala le nul que je suis ;)
      1. salut,

        en général ton script commence par #!/bin/sh sachant que "sh" n'est qu'un lien vers ton programme shell: bash, tcsh, csh ...

        a+
        mat
    2. Modérateur
      En bash, essaye quelque chose du genre

      #!/bin/bash
      for myfile in images/* ; do
      echo $myfile;
      done

      Gates gave us the windows.
      Linux gave us the whole house....
      1. Modérateur
        merci merci

        mais c en sh enfin je crois que c assez proche du bash.

        je vais essayer
      2. Modérateur
        de plus je dois manipuler chaque fichier du rep les uns apres les autres c pour ca que j'utilise la fonction 'foreach'

        c justifier non ?

        il y a une erreur de syntaxe ds mes ligne de commandes ?
    3. Modérateur
      D'abord c'est dans quel langage ton script ?

      Gates gave us the windows.
      Linux gave us the whole house....