Rechercher : dans
Par :

Script shell (bash)

Dernière réponse le 14 oct 2008 à 18:48:58 widi70, le 4 jan 2007 à 14:58:12 
 Signaler ce message aux modérateurs

Bonjour tout le monde ça serait pour savoir si vous faites du script shell ici car j'ai bcp de difficulte???????????
merci

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « script shell (bash) » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Guide d'utilisation du Shell pour débutant VoirSHELL BASH - GUIDE D'UTILISATION - Niveau Débutant Introduction Appel aux membres CCM II. C'est quoi le shell ? III. Comment accéder à la ligne de commande IV. Les consoles virtuelles Exemple : Accéder à la console 3 depuis l'interface...
Le remplacement de variables en shell Bash VoirLe remplacement de variables Introduction Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec...

1

vil coyote, le 4 jan 2007 à 15:52:16

Salut,

ah mais certainement,tu trouveras certainement des liens...
Sous quel os les désires-tu?
<<Si tu le fais,fais-le bien.(Aristote)>>
Et merci de nous tenir au courant de l'évolution de votre probléme...

Répondre à vil coyote

2

lami20j, le 4 jan 2007 à 16:28:16

Salut,

ça serait pour savoir si vous faites du script shell ici car j'ai bcp de difficulte???????????

Si tu parles de la cuisine shell, alors donne ta recette.
Tu trouveras sûrement un shell cook :-))
lami20j

Répondre à lami20j

3

widi70, le 4 jan 2007 à 16:36:26

Ben voila, Je ne comprend rien et j'ai des partiels lundi (de plus j'ai ete bcp absente en cours dc je n'ai pas tout ((a cause d'un accident))).
donc voici quelques enonce et j'aurais besoin que vous me donniez le shell (SVP)

1: a) sous le repertoire courant, afficher la liste de tous les sous repertoires.
b) sous le repertoire courant, afficher la liste de tous les sous repertoires de chaque sous repertoire.

2: a)sous le repertoire courant, dupliquer les fichier ordinaire osus un repertoire dont le nom est donné en argument. Traiter tous les cas d'erreur.
b)Meme chose que a) mais on s'interresse à tous les fichier dont la taille ne depasse pas 50octets.
c)meme chose mais fichier executable.

3: a)Ecrire une fonction dt voici la specification:
nom de fct°: EntierValide
parametre: EstEntier
effet: l'entier 0 est retourné si le parametre "EstEntier" designe un entier, sinon l'entier 1 est retourné.
b)Ecrire une commande shell avec deux arguments. Si les deux arguments designent deux entiers alors il faut calculer et afficher les resultat des cinq operation suivant: +,-,*,/ et le reste de la division. Traiter tous les cas d'arreur.

4: Pour cette exercice il faut donnner le texte de commande:

nom de la commande: cmd2
arguments: aucun
effet: La commande doit editer le message suivant: "Mon repertoire courant est: ...."

Je vous remerci d'avance de vos reponse, si vous pouvez me donner qq explications à cote se serait super .

MERCI

Répondre à widi70

4

lami20j, le 4 jan 2007 à 16:49:35
  • +1

Salut,

voilà pour 3: a) lami20j

Répondre à lami20j

5

widi70, le 4 jan 2007 à 18:11:45

Y'aurais possibilité que tu m 'explique un peu???
Merci

Répondre à widi70

6

lami20j, le 4 jan 2007 à 18:50:44

Re,


4: Pour cette exercice il faut donnner le texte de commande:

nom de la commande: cmd2
arguments: aucun
effet: La commande doit editer le message suivant: "Mon repertoire courant est: ...."


Dans un terminal tape

echo -e '#!/bin/sh\n\necho "Mon répertoire courant est : $(pwd)"' > cmd2
ensuite pour exécution
chmod +x cmd2 && ./cmd2
lami20j

Répondre à lami20j

7

widi70, le 6 jan 2007 à 09:26:58

Pk -e ça sert a koi

Répondre à widi70

8

jipicy, le 6 jan 2007 à 10:00:59

Salut,

man echo (extrait) :

OPTIONS
       -n     Ne pas effectuer le saut de ligne final.

       -e     Interpréter les séquences de caractères précédées d'un backslash
              '\' suivantes :
              \a     alerte (sonnerie)
              \b     retour en arrière d'un caractère
              \c     supprimer le saut de ligne final
              \f     saut de page
              \n     saut de ligne
              \r     retour chariot
              \t     tabulation horizontale
              \v     tabulation verticale
              \\     backslash
              \nnn   le caractère de code ASCII nnn (en octal)

       -E     Désactiver les interprétations des séquences spéciales.
;-))

PS. Évite le style SMS s'il te plaît, merci ;-)
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

9

widi70, le 6 jan 2007 à 11:25:34
  • +2

Ah ok merci (et desolé pour le style sms!!!)
alors tu pourrais m'expliquer les commande
expr, declare, let, $((...)) et $[...]

a quoi elle servent et comment on les utilise STP
Merci

Répondre à widi70

10

ekra, le 6 jan 2007 à 11:44:25

Bonjour,

$((...)) sert a l'évaluation d'expression arithmétiques (en gros ça calcule)

let a=1+1 est la meme chose que a=$((1+1))

apres je connais $0, $1, $2 ,$n pour récupérer le n-ieme arguement
$# pour le nombre d'arguments

Répondre à ekra

11

widi70, le 6 jan 2007 à 11:48:49

Merci beaucoup et pour expr et decare tu sait?

mais par exemple si on me demande donner le texte du programme qui utilise la commande let ou $((...)) je doit ecrire quoi??
merci

Répondre à widi70

12

widi70, le 6 jan 2007 à 12:47:29

Ok bon ça y est j'ai trouver
pour expr c'est
$ a=`expr 3 + 4`
$ echo $a
7

et declare c'est:
Les fonctions peuvent s'exporter par la commande declare -fx fonction

mais maintenant ce que je comprend c'est quand on me demande de :

1)ecrire un programme shell nommé "operation". Ce programme utilise deux arguments (on suppose que les deux arguments sont des entiers et le deuxième argument est nul). Le programme doit calculer et afficher la somme, la difference, la division, la multiplication et le reste de la division.

a) Donner le texte du programme qui utilise la commande expr.
b)Donner le texte du programme qui utilise la commande declare.
c)Donner le texte du programme qui utilise la commande let.
d)Donner le texte du programme qui utilise la commande $((...)) ou $[...].

SVP donner moi juste un exemple et je ferai les autres
Je vous en supplie mes partiel sont lundi et il faut que j'assure
SVP SVP SVP SVP

Répondre à widi70

13

widi70, le 6 jan 2007 à 13:11:59

J'ai encore une autre petite question
comment on fait pour verifier que le nombre qu'a taper l'utilisateur est bien un reel???

Je vous remercie de toutes vos reponses, je sai pas comment je ferais sans vous!!!!
merci
repondez moi SVP

Répondre à widi70

14

lami20j, le 6 jan 2007 à 14:31:24

Salut,

Accepte les notations avec . ou ,

10.23
10,23

#!/bin/sh

echo "Entre un numéro réel : "
read var

if [ "$(echo $var | grep -Eo '^[0-9]+[.,][0-9]+$')" ]
then
  echo  "$var est un nombre réel"
fi

lami20j

Répondre à lami20j

15

lami20j, le 6 jan 2007 à 14:44:46

Re,

accepte toujours le . et la ,
ainsi que la notation scientifique avec E et e
10.23
10,23
10.23e+24
10.23E+24
10.23e-24
10.23E-24

#!/bin/sh

echo "Entre un numéro réel : "
read var

if [ "$(echo $var | grep -Eo '^[+-]?[0-9]+[.,][0-9]+([Ee]([+-]?[0-9]+))?$')" ]
then
  echo  "$var est un nombre réel"
fi
lami20j

Répondre à lami20j

16

widi70, le 6 jan 2007 à 15:06:51

Ok merci bien et sinon pour ma question <12> (le texte des commandes)
je pourrais avoir une tite aide aussi SVP
juste un exemple et apres je vous montre ce que j'ai fait

Répondre à widi70

17

lami20j, le 6 jan 2007 à 15:19:49

Re,

1)ecrire un programme shell nommé "operation". Ce programme utilise deux arguments (on suppose que les deux arguments sont des entiers et le deuxième argument est nul). Le programme doit calculer et afficher la somme, la difference, la division, la multiplication et le reste de la division.

#!/bin/sh

n1=$1
n2=$2

echo "Entrez l'opération à effectuer :"
read op

case $op in
'+')
   echo $(($1 + $2))
   ;;
'-')
   echo $(($1 - $2))
   ;;
'*')
   echo $(($1 * $2))
   ;;
'/')
   echo "scale=2;$1/$2" | bc
   ;;
*)
   echo "Opération inconnue"
   ;;
esac
lami20j

Répondre à lami20j

18

lami20j, le 6 jan 2007 à 15:34:07

Pour exécuter

operation.sh N1 N2
N1 et N2 sont des nombres entiers

Ou encore
#!/bin/sh

n1=$1
n2=$2

echo -e "Opérations \n"
echo "+ addittion"
echo "- soustraction"
echo "* multiplication"
echo "/ division"
echo "% modulo - calculer le reste"
echo -e "\nEntrez l'opération à effectuer sur $1 et $2\n"

read op

case $op in
'+')
   echo "$1 + $2 = $(($1 + $2))"
   ;;
'-')
   echo "$1 - $2 = $(($1 - $2))"
   ;;
'*')
   echo "$1 * $2 = $(($1 * $2))"
   ;;
'/')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      echo "$1 / $2 = $(echo "scale=2;$1/$2" | bc)"
   fi
   ;;
'%')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      echo "$1 % $2 = $(($1%$2))"
   fi
   ;;
*)
   echo "Opération inconnue"
   ;;
esac
lami20j

Répondre à lami20j

19

widi70, le 6 jan 2007 à 15:42:22

Ben a vrai dire je comprend pas trop la elle sont ou les commande ?
parce que par exemple pour le a) fallait utiliser la commande expr

Répondre à widi70

20

lami20j, le 6 jan 2007 à 16:12:12
  • +1

Re,


ben a vrai dire je comprend pas trop la elle sont ou les commande ?
parce que par exemple pour le a) fallait utiliser la commande expr


Pourtant tu as dit dans le message 12
ok bon ça y est j'ai trouver
pour expr c'est
$ a=`expr 3 + 4`
$ echo $a
7

#!/bin/sh

n1=$1
n2=$2

echo -e "Opérations \n"
echo "+ addittion"
echo "- soustraction"
echo "* multiplication"
echo "/ division entière"
echo "% modulo - calculer le reste"
echo -e "\nEntrez l'opération à effectuer sur $1 et $2\n"

read op

case $op in
'+')
   expr $1 + $2
   ;;
'-')
   expr $1 - $2
   ;;
'*')
   expr $1 '*' $2
   ;;
'/')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      expr $1 / $2 
   fi
   ;;
'%')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      expr $1 % $2
   fi
   ;;
*)
   echo "Opération inconnue"
   ;;
esac
lami20j

Répondre à lami20j

21

widi70, le 6 jan 2007 à 16:51:51

Ah ok merci bcp
et pour toutes les commandes que j'ai citer dans <12> ça marche comme ça???

merci

Répondre à widi70

22

lami20j, le 6 jan 2007 à 17:11:51

et pour toutes les commandes que j'ai citer dans <12> ça marche comme ça???

Pas tout à fait. Voilà avec declare

#!/bin/sh

declare -i res
n1=$1
n2=$2

echo -e "Opérations \n"
echo "+ addittion"
echo "- soustraction"
echo "* multiplication"
echo "/ division entière"
echo "% modulo - calculer le reste"
echo -e "\nEntrez l'opération à effectuer sur $1 et $2\n"

read op

case $op in
'+')
   res=$1+$2
   echo $1 + $2 = $res
   ;;
'-')
   res=$1-$2
   echo $1 - $2 = $res
   ;;
'*')
   res=$1'*'$2
   echo $1 '*' $2 = $res
   ;;
'/')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      res=$1/$2 
      echo $1 / $2 = $res
   fi
   ;;
'%')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      res=$1%$2
      echo $1 % $2 = $res
   fi
   ;;
*)
   echo "Opération inconnue"
   ;;
esac
lami20j

Répondre à lami20j

23

lami20j, le 6 jan 2007 à 17:29:43
  • +2

Et avec let

#!/bin/sh

n1=$1
n2=$2

echo -e "Opérations \n"
echo "+ addittion"
echo "- soustraction"
echo "* multiplication"
echo "/ division entière"
echo "% modulo - calculer le reste"
echo -e "\nEntrez l'opération à effectuer sur $1 et $2\n"

read op

case $op in
'+')
   let res=$1+$2
   echo $1 + $2 = $res
   ;;
'-')
   let res=$1-$2
   echo $1 - $2 = $res
   ;;
'*')
   let res=$1'*'$2
   echo $1 '*' $2 = $res
   ;;
'/')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      let res=$1/$2 
      echo $1 / $2 = $res
   fi
   ;;
'%')
   if  [ "$2" = "0" ] 
   then
      echo "Division avec zéro"
      exit
   else
      let res=$1%$2
      echo $1 % $2 = $res
   fi
   ;;
*)
   echo "Opération inconnue"
   ;;
esac
lami20j

Répondre à lami20j

24

widi70, le 6 jan 2007 à 17:51:18

Ok merci bcp
et avec $((....)) ou $[...] ??

Répondre à widi70

25

lami20j, le 6 jan 2007 à 17:59:21
  • +1

et avec $((....))?? Tu ne lit pas mes messages.

et

Pour $[..] dit à ton prof que c'est la forme ancienne de $((..)) donc ça ne vaut pas la peine de gaspiller des neurones et de l'encre avec ça :-))

echo "$1 / $2 = $(echo "scale=2;$1/$2" | bc)" je fais la division en réel

tu peux remplacer avec

echo "$1 / $2 = $(($1/$2))"
lami20j

Répondre à lami20j
Collection CommentÇaMarche.net