CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème shell

Dargor
Dargor
Niveau 10
31 décembre 2009 à 15:40:47

Testé avec : ksh (OpenBSD) et dash/bash (GNU/Linux)

Ce script:
--CUT HERE--

  1. !/bin/sh

q=42
echo "q = $q"
while read a
do
let "q++"
echo "q = $q"
done < /etc/fstab
echo "q = $q"
--CUT HERE--

renvoie:
q = 42
q = 43
q = 44
q = 45
q = 46
q = 47
q = 48
q = 49
q = 50
q = 51
q = 52
q = 53
q = 54
q = 55
q = 56
q = 56

--CUT HERE--

  1. !/bin/sh

q=42
echo "q = $q"
cat /etc/fstab | while read a
do
let "q++"
echo "q = $q"
done
echo "q = $q"
--CUT HERE--

renvoie:
q = 42
q = 43
q = 44
q = 45
q = 46
q = 47
q = 48
q = 49
q = 50
q = 51
q = 52
q = 53
q = 54
q = 55
q = 56
q = 42

Si quelqu'un a une explication logique et rationnelle, j'ai plus de cheveux pour ma part...

chris_27
chris_27
Niveau 10
31 décembre 2009 à 15:57:38

La réponse est dans le pipe.

Dans le premier cas, tu n'as qu'un processus qui tourne, donc un seul q.
Dans le deuxième cas, tu as création de processus et duplication du q au niveau du | :d) à droite du |, tu augmentes q. Et à la fin, tu récupères le q de gauche, qui n'a jamais été augmenté.

PS : j'espère ne pas avoir dit trop de connerie. :o))

Dargor
Dargor
Niveau 10
31 décembre 2009 à 16:05:28

Gagné.

Premier script (avec un sleep 10 dans le while) :
dargor 9235 0.0 0.0 596 396 p7 S+ 4:04PM 0:00.00 sh wtf.sh

Second script (avec un sleep 10 dans le while) :
dargor 27376 0.0 0.0 588 392 p7 S+ 4:04PM 0:00.00 sh wtf.sh
dargor 7296 0.0 0.0 588 340 p7 S+ 4:04PM 0:00.00 sh wtf.sh

Grmbl.

godrik
godrik
Niveau 30
31 décembre 2009 à 20:25:51

pff, c'est pas juste. Ils ont jouer et gagne avant que je me leve.
/me boude

BrianGriffin
BrianGriffin
Niveau 10
06 janvier 2010 à 17:04:16

Arf je sais pas comment t'aider Dargor :/

Dargor
Dargor
Niveau 10
06 janvier 2010 à 17:08:20

Pas besoin d'aide, c'était juste une question :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware