CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [ bash shell] Quelqu'un pour m'expliquer les variables des paramètres $

DébutPage précedente
1
Page suivantePage suivante
Mr_Linstit Mr_Linstit
MP
Niveau 10
09 février 2018 à 13:46:36

Salut tout le monde , je comprend pas le rôles de ces variables.
Même si je sais que

$# contient le nombre de paramètres
$0 contient le script
$1 à $9 = les 9 Paramètres

Mais la question est: on s'en sert à quel moment dans le script?

Merci :hap:

Sepalcure Sepalcure
MP
Niveau 7
09 février 2018 à 13:53:56

Mais la question est: on s'en sert à quel moment dans le script ?

Y a une quantité industrielle de moyens d'utiliser tous ces paramètres dans un script :hap:

Dès que tu veux que le script agisse en fonction de ce que tu lui passes comme argument ou qu'un programme lui passe en argument, en fait :hap:

Sepalcure Sepalcure
MP
Niveau 7
09 février 2018 à 13:59:52

Pareil pour une fonction d'ailleurs :hap:

Mr_Linstit Mr_Linstit
MP
Niveau 10
09 février 2018 à 14:00:57

Si je fais un

read -p 'quel est votre nom' name

echo "Votre nom est $name"

Le "$" est considéré comme un de ces paramètres ?

Sepalcure Sepalcure
MP
Niveau 7
09 février 2018 à 14:07:47

Le 09 février 2018 à 14:00:57 Mr_Linstit a écrit :
Si je fais un

read -p 'quel est votre nom' name

echo "Votre nom est $name"

Le "$" est considéré comme un de ces paramètres ?

Non, read va stocker ce qui a été saisi dans la variable $name et echo va l'afficher :oui:

Par exemple, si tu lances le script "mon_script.sh" avec la commande "./mon_script.sh foo bar" :
$1 vaudra foo
$2 vaudra bar
$@ vaudra foo bar
$# vaudra 2

Mr_Linstit Mr_Linstit
MP
Niveau 10
09 février 2018 à 14:15:33

Non, read va stocker ce qui a été saisi dans la variable $name et echo va l'afficher :oui:

Par exemple, si tu lances le script "mon_script.sh" avec la commande "./mon_script.sh foo bar" :
$1 vaudra foo
$2 vaudra bar
$@ vaudra foo bar
$# vaudra 2

:d) je comprend mieux merci :hap:
Mais pourquoi appliquer des paramètres au lancement du script?

Sepalcure Sepalcure
MP
Niveau 7
09 février 2018 à 14:28:16

On va prendre un exemple hypothétique à la con
Mettons que tu veuilles renommer incrémentalement des fichiers
Tu peux le faire manuellement mais ça va très rapidement devenir chiant, et ça va devenir encore plus rapidement chiant si tu veux le faire sur beaucoup de fichiers (faudra le faire avec une boucle etc.)

Une solution potentielle serait de faire un script (en l'occurrence en bash vu que c'est le language que tu as mentionné)

#!/usr/bin/env bash

compteur=0

# tant que le nombre d'arguments restants est supérieur à 0, faire...
while [[ $# -gt 0 ]]; do
    mv "$1" "$compteur"

    # incrémenter le compteur de 1
    (( compteur++ ))

    # passer à l'argument suivant
    # $2 devient $1 au prochain passage de la boucle (par exemple)
    shift
done

Et maintenant (en admettant que le script soit dans ton PATH), lancer "mon_script *" va renommer incrémentalement tous les fichiers dans le répertoire courant

Message édité le 09 février 2018 à 14:32:10 par Sepalcure
Mr_Linstit Mr_Linstit
MP
Niveau 10
09 février 2018 à 14:35:03

Merci Sepaclure pour toute ces infos qui vont mettre utile :)

Sepalcure Sepalcure
MP
Niveau 7
09 février 2018 à 14:35:38

Si tu veux un autre exemple trivial, mettons que tu trouves que la commande pour changer le volume sur ton système est trop chiante à taper et pas super intuitive (par exemple pour augmenter le volume de 10% avec pactl ça serait un truc infect dans le genre pactl set-sink-volume <le nom de ta carte son> +10%) et que tu veux juste te faire un petit script pour le monter et le descendre de 10%

#!/usr/bin/env bash

case "$1" in
   up) <la longue commande à la con> +10%
   down) <la longue commande à la con> -10%
esac

TL;DR : en gros ces variables sont essentielles dès que tu veux que ton script soit un peu interactif directement via la ligne de commande

Message édité le 09 février 2018 à 14:38:19 par Sepalcure
[deban]_Dakien [deban]_Dakien
MP
Niveau 10
12 février 2018 à 11:34:19

Tiens, j'avais fait ça pour le son chez moi :hap:

mixerctl -w outputs.master=$1,$1
mixerctl -w outputs.master2=$1,$1

Dans un fichier que j'ai nommé "VolumeLaptop"

Quand j'ouvre rapidement mon dmenu, je fais "Vol", il me sort VolumeLaptop et plus qu'à entrer le niveau de volume que je veux et voilà, ça me prend 2 secondes et j'ai le son qui est au niveau que je veux :oui:

Dans le même genre, aussi :

youtube-dl -o "%(playlist_index)s-%(title)s" "$1"

Dans un script que j'ai appelé youtube-playlist parce que j'en avais marre d'avoir les vidéos dans un ordre alphabétique quand celles-ci se suivaient chronologiquement à la base. Du coup j'ai youtube-dl (le classique), youtube-mp3 (il récupère uniquement le son et le met au format mp3) et youtube-playlist (pour garder le même ordre que sur le site).

Sepalcure Sepalcure
MP
Niveau 7
12 février 2018 à 13:01:52

Mon setup personnel est assez majoritairement composé de scripts en tous genres, donc c'est pas moi qui vais te contredir quant à leur utilité potentielle :hap:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment