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

[shell] problème de débutant

ImNothing
ImNothing
Niveau 4
20 mai 2013 à 19:07:52

Bonjour

J'essaie de faire un script en shell ( donc en sh ) et j'bloque sur un point depuis un long moment je sais pas même pas si ce que je cherche à faire est possible.

J'voudrais simplement faire une boucle while qui lirait une ligne et prendrait chaque mot de cette ligne entre les virgule (genre mot1,mot2,mot3 etc) pour les mettre dans des variables que j'utiliserai en dehors de la boucle while. Donc pour séparer les mots je vois la manip à faire avec un cat cut -d "," | -f$(($i+1)), j'ai le bon résultat.

Mon problème c'est juste de générer des variables dans cette boucle while, d'après ce que j'ai compris on ne peut pas faire de variable numérotées du coup je comptais nommer mes variables par exemple "$a" puis "$b" etc.

C'est possible ?

Merci :)

dark_drow
dark_drow
Niveau 15
20 mai 2013 à 19:11:04

avec un tableau peut etre ?

ImNothing
ImNothing
Niveau 4
20 mai 2013 à 19:17:28

:noel:

Oui, ok, merci, je crois que j'ai besoin de sommeil :noel:

Juste pour le fun y'avait pas d'autre solutions ?

DN4
DN4
Niveau 7
22 mai 2013 à 18:38:18

"Juste pour le fun y'avait pas d'autre solutions ?"

:d) Il n'y en a pas 36 en POSIX sh(1). Il n'y a pas de tableaux et tu sembles avoir une solution qui en implique un, donc je suppose que tu fais du bash(1) finalement ? :(

Quand tu dis "ligne", tu parles d'une chaîne de caractères (dans une variable par ex.) ou d'une ligne d'un fichier ? :(

Je pars du principe qu'il n'est pas question de fichier ici.

En bash(1) tu ferais simplement ça :

var=mot1,mot2,mot3

IFS=, read -ra words <<< "$var"
echo "${words[0]}"

En sh(1), t'as pas vraiment le choix, tu truanderais avec set(0) :hap: :

var=mot1,mot2,mot3

oldifs=$IFS IFS=,
set -f -- $var
IFS=$oldifs
echo "$1"

Le principe est d'utiliser les variables qui sont normalement destinées aux arguments de ton script passés sur la ligne de commande, donc si ton script en accepte et que tu veux t'en servir après cette manip, il faut que tu les stockent dans des variables au préalable. :)

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