shell ou script linux
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

shell ou script linux



  1. #1
    invited9f05e20

    shell ou script linux


    ------

    bonjour à tous voilà je viens de découvrir linux pour faire des test avec un shell ou script que j'ai dans mon cours mais rien ne se passe voici ce que j'écris:

    <<for i in toto ; do if echo a ; then echo b ; else echo a ; fi ; done >>
    et rien ne se passe pourquoi

    ensuite j'essais avec ça :

    <<a=1 ; b=$a ; a=2 ; export a ; echo $ab >>
    si vous pouviez éclairer mes lanternes car je ne connais pas grand chose en programmation et je n'ai pas de manuelle non plus merci à vous tous

    -----

  2. #2
    Coincoin

    Re : shell ou script linux

    Salut,
    <<for i in toto ; do if echo a ; then echo b ; else echo a ; fi ; done >>
    et rien ne se passe pourquoi
    Premièrement, il faut comprendre comment marche la boucle for. "for i in toto" fait que i prend tour à tour toutes les valeurs présentes dans la liste toto. Ici "toto" est vide, donc la boucle ne fait rien.
    Ensuite, je ne comprends pas "if echo a". "Echo" écrit "a" sur le terminal, ensuite il renvoie une valeur dépendant du fait qu'il y ait eu des erreurs ou non. Le "if" teste donc s'il y a eu des erreurs dans la commande "echo a". Je ne pense pas que c'est ce qui était souhaité.

    <<a=1 ; b=$a ; a=2 ; export a ; echo $ab >>
    "$ab" est la valeur de la variable nommée "ab"... qui est vide. Pour avoir les valeurs de a et de b, il faudrait "$a$b". À quoi sert l'export ?

    Pour trouver un manuel, le mieux est de chercher "bash tutoriel".
    Encore une victoire de Canard !

  3. #3
    polo974

    Re : shell ou script linux

    ah, ce toto...

    le shell (perso c'est le bash, un sh évolué fourni avec linux) a une syntaxe assez euh comment dire lourd(ingu)e... mais on y arrive.
    for a 2 formes: for i in list.... un peu comme en python et for ((...;...;...)) un peu comme en C

    Code:
    for (( i=0 ; $i<10 ; i=$i+1)) ; do echo $i ; done
    compte de 0 à 9 inclus

    les tests (ici test si le paramètres 2 existe puis bornage de la valeur (écriture assez "à la C"))
    Code:
    #size 3 par defaut
    if [[ -z $2 ]]
    then
        size=3
    else
        size=$(($2+0))
        size=$(($size<0?0:$size))
        size=$(($size>3?3:$size))
    echo "Taille bidule:$size"
    fi
    et ici un test de grandeur (un peu à la fortran pour cause de < et > déjà utilisé...)
    Code:
    if [[ $w -gt $wmax ]]
    then
        echo "Image trop large"
        exit
    fi
    Pour revenir au for i in ...
    c'est très puissant pour jouer sur des fichiers par exemple:
    pour tous les fichiers présent à partir du répertoire courant, changer l'utilisateur:
    Code:
    for i in $(find .)
    do
        echo "$i"
        chown 1001:1001 "$i"
    done
    on peut ensuite jouer sur le find pour avoir une action sélective (par exemple supprimer les fichiers finissant par ~)


    bref faire un man bash >bash.txt et apprendre par coeur

  4. #4
    Towl

    Re : shell ou script linux

    Le dernier for est un peu bourrin sachant que find sait le faire tout seul
    Code:
    find . -exec 'chown 1001:1001 {} ;'
    Mais c'est vrai que la on sort un peu du cadre de l'apprentissage des boucles bash Mais ca reste plus rapide que le for
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  5. A voir en vidéo sur Futura
  6. #5
    Philou67

    Re : shell ou script linux

    Citation Envoyé par stegosor Voir le message
    <<for i in toto ; do if echo a ; then echo b ; else echo a ; fi ; done >>
    et rien ne se passe pourquoi
    En bash, cette ligne est valide et renvoie :
    a
    b

    Le "a" provient du echo a du if.
    Le "b" provient du echo b du then qui s'exécute car le retour de la commande "echo a" est vrai.

    En revanche, il y a fort à parier que l'objet du test aurait du utiliser $i.
    Pourrais-tu préciser quel shell script tu utilises ?

    Citation Envoyé par Coincoin Voir le message
    Salut,
    "for i in toto" fait que i prend tour à tour toutes les valeurs présentes dans la liste toto. Ici "toto" est vide, donc la boucle ne fait rien.
    La liste n'est pas vide : elle contient "toto"... et oui, encore lui !
    :'( Plus j'apprends, et plus je mesure mon ignorance

  7. #6
    invited9f05e20

    Re : shell ou script linux

    bonjour et merci de vos réponses donc en voyant tout ça puis je conclure que j'aurais fait apparaitre a sur une ligne et b sur une autre ou alors je l'ecrit mal car et avec donc la ligne que vous avez tous vue
    <<for i in toto ; do if echo a ; then echo b ; else echo a ; fi ; done >>
    après vos explication il est donc normale que rien ne se passe ?
    et pour la deuxième <<a=1 ; b=$a ; a=2 ; export a ; echo $ab >>
    apres les explications de coincoin je comprend pourquoi je n'ai rien
    car c'est mal ecrit pour obtenir un résultat merci a vous tous et j'aimerais juste une précision sur <<for i in toto ; do if echo a ; then echo b ; else echo a ; fi ; done >> après vos explication il est donc normale que rien ne se passe ?
    merci de me répondre après je vous embêterais plus et encore un grand merci cela ma bien aider a bientôt

  8. #7
    Philou67

    Re : shell ou script linux

    Ton dernier message est quelque peu "confus".
    Pourrais-tu préciser :
    - le shell que tu utilises : sh, csh, ksh, zsh, bash, ... ?
    - quel est l'objectif de la fonction que tu veux écrire ? (en effet, pour écrire simplement a et b, il y a plus simple que la boucle : echo a;echo b).
    :'( Plus j'apprends, et plus je mesure mon ignorance

  9. #8
    invited9f05e20

    Re : shell ou script linux

    encore merci a vous de toutes vos réponse cela ma bien aider et j'y suis arriver a bientôt merci

  10. #9
    Papy Octet

    Re : shell ou script linux

    Citation Envoyé par stegosor Voir le message
    encore merci a vous de toutes vos réponse cela ma bien aider et j'y suis arriver a bientôt merci
    Pour tous les autres utilisateurs de ce forum : comment as-tu fait ?
    Quelle est ta solution, le résultat ?

    Quand on a trouvé une solution à son problème, et pour remercier ceux qui t'ont aidé, il est normal de renvoyer la solution.

    Merci.

    A+
    Cogito ergo sum !

Discussions similaires

  1. Ecriture d'un script shell
    Par invite1d93df33 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 28/09/2008, 20h44
  2. un programme sous unix ( script shell )
    Par invite54d71191 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 09/08/2008, 12h39
  3. Shell linux : réutiliser une liste
    Par invite70eda27f dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 27/06/2008, 08h59
  4. Shell-éco
    Par _Goel_ dans le forum Technologies
    Réponses: 1
    Dernier message: 12/04/2007, 18h05
  5. script shell texte en html
    Par macoupc dans le forum Logiciel - Software - Open Source
    Réponses: 15
    Dernier message: 29/10/2005, 19h24
Découvrez nos comparatifs produits sur l'informatique et les technologies.