kmchen
Février 21, 2016, 9:55
1
Bonjour
La commande suivant s’execute correctement dans un shell:
find "/var/www/lef/" -mmin -60 | egrep -v "/cache|/stats|/sql|/tmp|/log"
Mais lorsque je veux en capturer la sortie dans un script de cette manière:
cmd='find "/var/www/lef/" -mmin -60 | egrep -v "/cache|/stats|/sql|/tmp|/log"'
result=`$cmd`
wordcount="`echo $result |wc -w`"
j’obtiens:
Toute aide bienvenue
kna
Février 21, 2016, 9:55
2
Inverses les quotes et doubles quotes ?
--cmd='find "/var/www/lef/" -mmin -60 | egrep -v "/cache|/stats|/sql|/tmp|/log"'
++cmd="find '/var/www/lef/' -mmin -60 | egrep -v '/cache|/stats|/sql|/tmp|/log'"
Comme ça le tube sera bien interprété par le shell.
kmchen
Février 21, 2016, 9:55
3
En fait j’avais un peu simplifié. Il y a des variables dans le paquet:
exclude='/cache|/stats|/sql|/tmp|/log'
wroot='/var/www/'
cmd="find $wroot -mmin -60"
result=`echo \`$cmd\` | egrep -v "$exclude"`
wordcount=`echo $result | wc -w`
Le script suivant fonctionne sur ma machine locale, mais sur un serveur externe elle donne un résultat nul quand je fais des “touch /var/www/site/testpirate”.
Les deux machines sont des debian