• [^] # Re: Variable

    Posté par (site web personnel) . En réponse au message Conseil script bash : script automatique d'analyse d'HDD/SSD sur PC. Évalué à 3.

    et un peu de mise en forme pour agrémenter la (re-)lecture, avec ```bash au début (tu peux éditer ton entrée de forum), comme ça cela présentera quasiment comme sur pastebin :

    declare -a disk=$(lsblk -l -d -p -n -o NAME,TYPE | awk '(2ドル=="disk"){print 1ドル}')
    echo "${#disk[@]}"
    for d in "${disk[@]}"
    do
     echo "COMMENCEMENT"
     echo "$d"
     DISK=$d
     DISK_sub="$(basename $d)"
     TYPE="$(smartctl -a $DISK | grep 'Rotation Rate:' | awk '{print 3ドル4ドル5ドル}')"
     if [ "$TYPE" = "SolidStateDevice" ]; then
     elif [ "$TYPE" != "SolidStateDevice" ]; then
     fi
    done
    exit 0

    declare c'est nouveau en bash ? (jamais utilisé...)

    man bash m'indique :

    Un tableau indicé est créé automatiquement si une variable quelconque est affectée en utilisant la syntaxe nom[indice]=valeur. L'indice est traité comme une expression
    arithmétique et doit s'évaluer en un nombre. declare -a nom permet de déclarer explicitement un tableau indicé (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-des‐
    sous). declare -a nom[indice] est aussi accepté ; l'indice est ignoré.

    Les tableaux associatifs sont créés en utilisant declare -A nom.

    Des attributs peuvent être indiqués pour une variable tableau en utilisant les commandes internes declare et readonly. Les attributs s'appliquent à tous les éléments
    d'un tableau.

    pfiou, va falloir que je relise attentivement le man, j'y vois d'autres nouveautés (pour moi... dès les variables de l'interpréteur o_O)

    bon, concrètement : $disk[@] contient
    "/dev/sda\n/dev/sdb" (donc deux lignes, 1 seul élément, ce qu'affiche correctement echo ${#disk[@]} : 1)

    et pour ta boucle, comme il y a un retour chariot, j'utilise plutôt la forme :

    echo ${disk[@]} | while read d ;
     do
     echo "disque $d"
     done

    avec une boucle while... j'ai jamais trop aimé les for :p