#1 Le 09/10/2016, à 00:24
- abach
[Résolu] Passer une variable à une fonction dans un find
Bonjour à tous et à toutes,
Je travaille actuellement sur un script me permettant de mettre en forme et de déplacer des fichiers crées automatiquement. Ces fichiers ont deux formes connues : "salon" et "couloir".
J'ai donc pensé faire deux fonctions : "salon" et "couloir" en leur passant des paramètres.
Voici une ébauche :
#!/bin/bash
source=/home/abach/atuer/cameras/0-travail
couloir=$source/couloir
pathcouloirlength=${#couloir}
couloirlength=$((pathcouloirlength + 8))
veille=`date -d "1 days ago" +%Y%m%d`
salonlength=$((couloirlength + 7))
echo $couloir
# echo "$jour"
echo "$veille-$couloirlength"
function couloir
{
echo "$1"
ls -l $0
}
export -f couloir
find $couloir -name "*.flv" -exec bash -c 'couloir $0 $couloirlength' {} \;
Mon souci est que, dans ma fonction, $0 me retourne ce que j'attend, mais $1 me retourne le nom du fichier, avec son chemin, sans les autres informations. Ceci pourra me servir, dans un second temps, pour faire un "mv" mais je dois d'abord mettre le nom des fichiers en forme, créer les nouveaux répertoires, etc..
Pour cela, j'ai entre autre besoin de récupérer $couloirlength mais j'ai beau chercher, je n'y arrive pas...
Si quelqu'un a une idée, je l'en remercie par avance.
Dernière modification par abach (Le 11/10/2016, à 08:28)
Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux
Hors ligne
#2 Le 09/10/2016, à 04:49
- pingouinux
Re : [Résolu] Passer une variable à une fonction dans un find
Bonjour,
Je n'ai pas bien compris ce que tu voulais récupérer, mais dans la fonction couloir, tu vas récupérer $couloirlength dans $2, à condition d'exporter la variable couloirlength dans le script.
Hors ligne
#3 Le 09/10/2016, à 06:43
- abach
Re : [Résolu] Passer une variable à une fonction dans un find
Merci pingouinux
Je ne veux rien récupérer. Tu me dis d'exporter la variable couloirlength C'est ça que je savais pas qu'il faille faire. Je vais donc chercher comme exporter une variable, à moins qu'une âme charitable me dise comment faire
Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux
Hors ligne
#4 Le 09/10/2016, à 06:49
- pingouinux
Re : [Résolu] Passer une variable à une fonction dans un find
C'est très simple…
export couloirlength
Hors ligne
#5 Le 09/10/2016, à 15:34
- Watael
Re : [Résolu] Passer une variable à une fonction dans un find
ou, tu le passes en argument à bash -c.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 11/10/2016, à 08:28
- abach
Re : [Résolu] Passer une variable à une fonction dans un find
@ Watael : bizarrement, avec "-c" ça n'a pas fonctionné.
@ pingouinux : merci pour l'info, ça marche nickel !
Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux
Hors ligne