Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 16 utilisateurs en ligne, consultez le détail
Auteur Message
Azollyx
#0 Message posté le : 01-06-2007 à 23:19:21


Naboo


Forum : Modérateur
Association : Président
Arrivé(e) le : 09-04-2006
Nombre de messages : 2085
Bonsoir tlm,
j'ai un petit problème en Bash :
CAN_OVERRIDE=

function can_override_test() {

	CAN_OVERRIDE=can

	${RSYNC} -r ${*} | while read line; do

		date=$(date -d "$(echo $line | cut -f 3,4 -d \ )" +%s)

		test $date -ge ${LAST_SYNC} && (

			CAN_OVERRIDE=cannot

			echo $line 1>&2

		)

	done

	echo "${CAN_OVERRIDE}" # <- tjr "can"

}

En fait, la modification de CAN_OVERRIDE ne tient pas, elle reprend sa valeur "can" au niveau du echo (alors que je suis bien passé dans l'alternative et qu'elle a bien été modifée). Je ne vois pas comment contourner ce problème.
J'ai essayer de virer les parenthèses mais rien. Je me demande si ça ne vient pas du pipe. Exporter la variable n'y fait rien non plus.
Avez-vous des idées de la manière que je pourrais utiliser pour contourner ce problème ? J'aimerais éviter le fichier...

-------------------------------------
toto
Azollyx
#1 Message posté le : 01-06-2007 à 23:56:33


Naboo


Forum : Modérateur
Association : Président
Arrivé(e) le : 09-04-2006
Nombre de messages : 2085
En attendant mieux, j'ai résolu le problème comme ceci :
CAN_OVERRIDE=

function can_override_test() {

	CAN_OVERRIDE=can

	CAN_OVERRIDE_FTMP=`mktemp`

	${RSYNC} -r ${*} | while test "${CAN_OVERRIDE}" != "${BREAKER}" && read line; do

		date=$(date -d "$(echo $line | cut -f 3,4 -d \ )" +%s)

		test $date -ge ${LAST_SYNC} &&

			rm -f "${CAN_OVERRIDE_FTMP}" &&

			CAN_OVERRIDE=cannot &&

			echo $line 1>&2

	done

	test -f "${CAN_OVERRIDE_FTMP}" && rm -f "${CAN_OVERRIDE_FTMP}" || CAN_OVERRIDE=cannot

}


-------------------------------------
toto