Forum Linux.général probleme dans ce script shell

Posté par  .
Étiquettes : aucune
0
11
fév.
2007
bonsoir;
esque vous pouvez m'aider a me comprendre le fonctionnement de ces mot cles?
ce script affiche une fenetre et ensuite choisir un fichier pour l'executer
merci.



#!/bin/bash
DIALOG=${DIALOG=dialog}
$DIALOG --backtitle "MENU DE COMPILATION" \
--title "COMPILATION" \
--radiolist "Faites votre choix : " 0 0 0 \
"exo1.c" "Compilation exercice 1." off \
"exo2.c" "Compilation exercice 2." off \
"exo3.c" "Compilation exercice3"off2>/tmp/checklist.tmp.$$

retval=$?
choix=`cat /tmp/checklist.tmp.$$`
rm -f /tmp/checklist.tmp.$$

case $retval in
0) case $choix in
exo1.c) gcc exo1.c
exec ./a.out
;;
exo2.c) gcc exo2.c
exec ./a.out
;;
exo3.c) gcc exo3.c
exec ./a.out
;;
esac
;;
*)
echo "Programme arrêté...";;
esac
  • # Re : probleme dans ce script shell

    Posté par  (site web personnel) . Évalué à 5.

    ce que tu appelle des mots clés, ce sont des commandes du shell, des noms de variables, ou des expression régulières ... Tu peux regarder dans ton cours pour plus d'informations ;-) ... ou aussi taper man commande pour lire la page de manuel d'une commande.

    On ne va pas faire tes devoirs a ta place, mais si tu as une question plus précise ...

    Adhérer à l'April, ça vous tente ?

  • # Quelques infos

    Posté par  . Évalué à 4.

    déjà il manque quelques espaces dans ton script

    "exo3.c" "Compilation exercice3"off2>/tmp/checklist.tmp.$$
    "exo3.c" "Compilation exercice 3." off 2>/tmp/checklist.tmp.$$

    ensuite:

    DIALOG=${DIALOG=dialog} je sais pas a koi ca sert:
    DIALOG=dialog devrait faire la meme chose... ceci permet de creer une variable de nom DIALOG qui contient le contenu dialog... un peu plus bas y'a la même chose avec la variable $choix. Tu crées le contenu d'une variable en faisait:
    variable_name=valeur
    tu l'utilises en ajoutant $ devant le nom de la variable
    $variable_name

    dialog est un programme (avec tout plein d'option que tu peux comprendre en utilisant "man dialog") qui affiche une fenetre de dialogue.

    $$ est une variable special de bash qui permet de retourner le "process ID" du shell qui est en train de s'executer. ceci permet de creer un fichier du type /tmp/checklist.tmp.12345 ou 12345 est le numero de process ID. l'idée est je pense de pouvoir utiliser le même script en même temps sur la même machine en s'assurant que le fichier temporaire aura un nom différent.

    2>"fichier" permet de rediriger la sortie 2 (standard erreur stderr) vers le fichier temporaire. la sortie stderr semble contenir le choix selectionné dans la fenetre de dialog.

    retval=$? permet d'avoir la valeur de retour du dernier processus lancé.
    ex:
    false;echo $?
    retourne 1
    true;echo $?
    retourne 0

    je pense que tu connais la commande "rm"

    ci-dessous un basic switch case en bash (selection multiple)

    case '$var' in #début du "case"

    'valeur1') #si variable $var est égal à valeur1
    n'importe quellle commande executé si valeur1...
    ;; # ;; permet de terminer la liste de commande

    'valeur2') #si variable $var est égal à valeur2
    n'importe quellle commande executé si valeur1...
    ;;

    *) si variable $var est égal à toutes les autres valeur
    n'importe quellle commande executé dans les autres cas...
    ;;

    esac #fin du case

    je pense avoir suffisament donné de détails...
    bon courage dans l'apprentissage du scripting bash, ci-dessous tu auras toutes les infos (faut juste comprendre l'anglais) :

    http://tldp.org/LDP/abs/html/

    Damien.
    • [^] # Re: Quelques infos

      Posté par  (site web personnel) . Évalué à 5.

      je pense avoir suffisament donné de détails...
      bon courage dans l'apprentissage du scripting bash, ci-dessous tu auras toutes les infos (faut juste comprendre l'anglais) :


      Tu es trop gentil de lui faire ses exercices ;-)
      amha, seul un prof d'info peut donner un script aussi inutile :D

      Adhérer à l'April, ça vous tente ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.