L'erreur de synthaxe de "if" et "do"
Bonjour,
for i in 'find /var/www/webmail'; do if [[ -f $i ]]; then chmod 0400 $i; chown www-data:www-data $i; elif [[ -d $i ]]; then chmod 0555 $i; chown www-data:www-data $i;fi done
ou est l'erreur de synthaxe ???
for i in 'find /var/www/webmail'; do if [[ -f $i ]]; then chmod 0400 $i; chown www-data:www-data $i; elif [[ -d $i ]]; then chmod 0555 $i; chown www-data:www-data $i;fi done
ou est l'erreur de synthaxe ???
1 réponse
-
Le double crochet derrière le if, l'espace manquant entre ] et ;.
Dans le for tu as utilisé les quotes et non les backquotes (alt gr 7) que tu peux remplacer par $( ..... ).
Exemple :
nano plop.sh
Dans ce fichier on écrit :
#!/bin/sh for i in $(find /var/www/webmail) do if [ -f $i ] ; then chmod 0400 $i elif [ -d $i ] ; then chmod 0555 $i fi chown www-data:www-data $i done
On sauve et on quitte (ctrl x) puis on met les droits en exécution, puis on lance :
chmod a+x plop.sh ./plop.sh
Je t'invite vivement à indenter ton code et à utiliser un éditeur muni d'une coloration syntaxique pour le bash (vim par exemple).
Note qu'en utilisant habilement find avec les options -exec et -type tu aurais pu écrire la même chose plus facilement.
Exemple : http://forum.ubuntu-fr.org/viewtopic.php?id=102733
Bonne chance