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 10/01/2012, à 11:04

sonn2

[RESOLU]question sur vos habitudes de codage

Bonjour smile
Je suis en train d'apprendre le shell depuis 2 jours et je me fait un petit script pour faire plusieurs actions différentes, donc j'ai utiliser des fonctions pour les définir, mais je me demande si les scripts shell utilise beaucoup des fonctions ? sinon il risque d'y avoir des confits

Donc voilà est-ce que bcp de vos script utilise des fonctions?

Voilà mon petit code si ça interesse (soyez indulgent je commence et je prefere les scripts aéré, je me repère mieux tongue chacun code à sa manière wink )

[script supprimer car trop ancien et mal fait wink ]

Dernière modification par sonn2 (Le 11/01/2012, à 14:15)

#2 Le 10/01/2012, à 11:20

HP

Re : [RESOLU]question sur vos habitudes de codage

fonction_01 à fonction_09 ! Comment dire… c'est brillant ! Je n'y aurais jamais pensé…


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#3 Le 10/01/2012, à 11:22

sonn2

Re : [RESOLU]question sur vos habitudes de codage

J'ai dit de pas se moquer :pleure:

#4 Le 10/01/2012, à 14:02

sputnick

Re : [RESOLU]question sur vos habitudes de codage


Il existe un tunnel obscur dans la lumière infinie. Lao-Tseu
https://sputnick.fr

Hors ligne

#5 Le 10/01/2012, à 15:18

twocats

Re : [RESOLU]question sur vos habitudes de codage

function fonction_01
{
    pwd
}
function fonction_02
{
    ls
}

M'enfin... neutral


La réponse est 42

Hors ligne

#6 Le 10/01/2012, à 17:42

sonn2

Re : [RESOLU]question sur vos habitudes de codage

><" les mecs! c'était pour des tests!!!
J'voudrais faire un script de connexion ssh, un autre pour sauvegarde intelligente, tri automatique des fichiers... bref des scripts plus gros que "ls"

Mais c'est pas la question du sujet!
Je voulait savoir si vous, vous utilisez des fonctions dans vos scripts! ><"

(aurais pas du poster le script...)

#7 Le 10/01/2012, à 19:07

kamui57

Re : [RESOLU]question sur vos habitudes de codage

ça dépend, par exemple

ERROR=1
OK=0
# test if positive integer
isinteger(){
    if [ $# -eq 1 ]
    then
    if [ -z "$(echo $1 | sed s/[0-9]*//)" ]
    then echo $OK
    else echo $ERROR
    fi
    fi
}

# random integer in the range between min and max
randomint(){
    if [ $# -eq 2 ]
    then
    if [ $(isinteger $1) -eq $OK ]
        then min=$1
        else echo "Minimal seconds number is not an integer"
    fi
    if [ $(isinteger $2) -eq $OK ]
        then max=$2
        else echo "Maximal seconds number is not an integer"
    fi
    
    echo $(($min + $RANDOM % ($max - $min + 1)))
    else
    echo $ERROR
    fi
}

Quand le dernier arbre aura été abattu, et le dernier animal exterminé, les hommes se rendront compte que l'argent ne se mange pas (proverbe indien)
Toshiba Satellite L655 4 Go RAM, Archlinux Gnome-shell,LXDE / W7
Toshiba Satellite M30 512 Mo RAM, Archlinux Gnome 3 restreint / Crunchbang LXDE
https://help.ubuntu.com/community/Pastebinit pour poster du texte sur internet en console

Hors ligne

#8 Le 10/01/2012, à 19:33

Bousky

Re : [RESOLU]question sur vos habitudes de codage

for fichier in `ls`

Jamais au grand jamais !
1) Il vaut mieux utiliser $(…) que `…` en bash.
2) Si tu as un nom de fichier contenant un espace, ça va planter (sans parler des retours à la ligne qui sont aussi autorisés dans un nom de fichier).

for fichier in *

Ça marche dans tous les cas et c'est moins gourmand en ressources.


[ -n $mdp ]&&[ $mdp != $s_mdp ]

Si mdp ou s_mdp contient un espace ou est vide, ça va planter :

[ -n "$mdp" ]&&[ "$mdp" != "$s_mdp" ]
while [ 1==1 ]

Il est plus efficace d'utiliser « true » ou « : » qui lui est équivalent :

while true
while :
[ $quitter == "o" ]

Si quitter contient un espace, ça plante, il faut mettre des guillemets. À l'inverse, ils ne servent à rien autour de « o » :

[ "$quitter" == o ]

@kamui57 :

isinteger () { [[ "$1" =~ ^[0-9]+$ ]] ; }
…
if isinteger "$1"

Je n'utilise des fonctions que pour ce qui est utilisé plusieurs fois ou ce qui peux être changé régulièrement pour ne pas avoir à me replonger dans tout le temps à chaque fois.

Dernière modification par Bousky (Le 10/01/2012, à 19:36)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#9 Le 10/01/2012, à 20:23

sonn2

Re : [RESOLU]question sur vos habitudes de codage

Merci Bousky de ta réponse smile je n'ai pas encore toutes les subtilités du bash en tete wink je vais apporter les modifications que tu m'as dit smile

Pour conclure je vais considerer que l'utilisation des fonctions n'est pas présentes dans la plupart des scripts, et si cela est fait je m'arrangerais wink

j'en aurais bien profitais pour vous poser une autre question mais bon je vais chercher avant de demander
neutralsmilebig_smilecool

Dernière modification par sonn2 (Le 10/01/2012, à 20:30)