Script bash

mini_moy -  
 mini_moy -
Bonjour à tous,
Je suis une débutante sur shell et j'aurais besoin d'une petite aide,
j'ai crée une fonction qui archive et compresse un dossier qu'on lui entre en paramètre et j'aurais aimé créer un script qui vérifie auparavant si l'espace de stockage est suffisant si c'est le cas il effectue la fonction d'archive si ça ne l'est pas il indique: libérez de l'espace? sachant que je travaille sous Sun et non Linux
Je vous remercie par avance d'une éventuelle réponse...

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    'lut, cette ligne marchera dans tout environnement POSIX (
    df
    ,
    sh
    et
    awk
    POSIX):
    FREE_SPACE=$((1024 * $(df -kP . | awk 'BEGIN{RS="";FS=" "}{print $11}')))

    Explication:
    • df -kP
      sort le résultat de
      df
      au format POSIX en précisant la taille de bloc: 1024, car la taille par défaut dépend de l'implémentation, bien que supposé être 512 (GNU df, je te regarde)
    • awk
      extrait le 11e paramètre, le nombre de blocs de 1024 octets libres.
    • le shell multiplie par 1024

    Le point en paramètre de
    df
    spécifie le chemin menant à la partition dont on veut l'espace libre -- ça peut être un sous-dossier,
    df
    remonte au mointpoint le plus proche.
    from human import idiocy
    del idiocy
    1
  2. mini_moy
     
    Merci beaucoup pour ta réponse, elle ne fonctionne pas pour moi
    J'avais ce message qui s'affichait: df: unknown option: P
    Usage: df [-F FSType] [-abegklntVv] [-o FSType-specific_options] [directory | bl ock_device | resource]
    bash: 1024 * : syntax error: operand expected (error token is " ")
    J'ai donc modifié ce que tu m'as dis par
    FREE_SPACE=$((1024 * $(df -k $mon_support | tail -1 | tr -s ' ' | cut -d ' ' -f 4)))
    et ça fonctionne. Encore merci
    0