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 09/10/2016, à 01: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, à 09: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, à 05: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, à 07: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 hmm


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, à 07: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, à 16: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, à 09: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