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

Programmation en Shell / Bash

alkritere
alkritere
Niveau 3
31 mars 2012 à 16:47:06

Bonjour,

J'aimerai une petite aide pour écrire ce script :

"Script qui teste si le paramètre entré est une variable d'environnement"

Je sèche, quelqu'un aurait une idée s'il vous plaît ?

godrik
godrik
Niveau 30
31 mars 2012 à 17:25:09

man printenv

DN4
DN4
Niveau 7
31 mars 2012 à 20:02:42
  1. !/bin/bash

if (($# != 1)); then
     printf 'usage: %s <string>\n' "${0##*/}" >&2
     exit 1
fi

found='not '

if printenv "$1" > /dev/null; then
     unset 'found'
fi

printf '%s is %san environment variable.\n' "$1" "$found"

alkritere
alkritere
Niveau 3
31 mars 2012 à 20:37:14

Merci pour cette réponse.

Cependant, je ne comprends

ni cette ligne:
printf 'usage: %s <string>\n' "${0##*/}" >&2

ni l'intérêt d'avoir rajouter:

/dev/null

Pourrais-tu m'expliquer s'il te plaît ?

Merci d'avance.

j3r3mux
j3r3mux
Niveau 10
31 mars 2012 à 21:30:03

Ce n'est pas une petite aide ça.

DN4
DN4
Niveau 7
01 avril 2012 à 19:45:54

"${0##*/}"

:d) Récupérer le nom du script.
(Pas toujours fiable car $0 peut contenir n'importe quoi si on le souhaite.)

Exemple :

- Tu lances le script x depuis ton home ;
- $0 a alors pour valeur /home/alkritere/x ;

- Pour extraire le "x" de cette chaîne, t'utilises ce que l'on appelle une PE (parameter expansion). Dans ce cas, elle consiste à enlever, à partir du début de la chaîne (#), tous les caractères rencontrés (*) jusqu'à tomber sur le dernier (##) caractère "/", en la parcourant de gauche à droite.

Si tu veux t'arrêter au premier caractère "/", tu utilises un seul "#".

Donc, avec "${0#*/}", tu obtiendras « home/alkritere/x »
et avec "${0##*/}", tu obtiendras seulement « x ».

&2

:d) Rediriger stdout vers stderr (descripteur de fichier 2).

Le message indiquant comment utiliser le script est affiché sur le flux de sortie permettant d'afficher des messages d'erreurs, et non sur la sortie standard.

/dev/null

:d) Rediriger stdout vers /dev/null pour ne pas afficher la sortie de printenv(1).

De cette manière, on vérifie que printenv(1) renvoie bien quelque chose, sans pour autant faire apparaître sa sortie sur la sortie standard.

De plus, on n'a pas besoin de rediriger stderr car la commande ne renvoie pas de messages d'erreurs si la chaîne passée en argument ne correspond pas à une variable d'environnement.

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