Script shell

Fermé
sisimouhamed - 3 mai 2009 à 19:30
 sisimouhamed - 3 mai 2009 à 21:01
Bonjour,
Merci pour votre soutient.Vous savais je veut comprendre le fonctionnement des scripts shell pour cela je voudrais ecrire un script shell qui prend en argument le un nom de fichier et affiche le nombre de mot contenue dans ce fichier voila ce que j'ai fai mais ça ne marche pas pour cela je voudrai une correction auprés de vous:
#!/bin/sh
echo "Donner un nom de fichier:$1"
a=$(cat $1)

for i in $a
do
wc -w $a

done
echo $a
A voir également:

10 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
3 mai 2009 à 19:43
Salut,

Par exemple
lami20j@debian:~/trash/ccm_sh$ sh wc.sh fic.txt
Fichier fic.txt contient 3 fic.txt mots
lami20j@debian:~/trash/ccm_sh$ cat fic.txt
mot1
mot2
mot3
lami20j@debian:~/trash/ccm_sh$ cat wc.sh
#!/bin/sh
echo "Fichier $1 contient $(wc -w $1) mots"
lami20j@debian:~/trash/ccm_sh$ sh wc.sh fic.txt
Fichier fic.txt contient 3 fic.txt mots
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
3 mai 2009 à 19:46
Salut,

lami20j y'a un os dans ton script (il faut filtrer wc à travers un pipe et cat, sinon on a le nom du fichier qui s'affiche) ;-))
#! /bin/sh

echo "Donner un nom de fichier : "
read fichier
echo
echo "Il y a $(cat $fichier | wc -w) mots dans $fichier"
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
3 mai 2009 à 19:55
Salut,

(il faut filtrer wc à travers un pipe et cat, sinon on a le nom du fichier qui s'affiche)
Oups, je n'ai pas fait attention. Merci.
Toutefois cat n'est pas obligatoire ;-))
lami20j@debian:~/trash/ccm_sh$ cat fic.txt
mot1
mot2
mot3
lami20j@debian:~/trash/ccm_sh$ cat wc.sh
#!/bin/sh
echo "Fichier $1 contient $(wc -w $1|cut -d' ' -f1) mots"
lami20j@debian:~/trash/ccm_sh$ sh wc.sh fic.txt
Fichier fic.txt contient 3 mots
0
sisimouhamed
3 mai 2009 à 20:01
j'ai fait ce que vous m'avait donner mais si je donne un nom de fichier comme:cours_4.pdf qui se trouve dans mon bureau le programme affiche
:cat: cours_4.pdf: Aucun fichier ou dossier de ce type
Il y a 0 mots dans cours_4.pdf
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
3 mai 2009 à 20:04
Re,

:cours_4.pdf qui se trouve dans mon bureau le programme affiche
Il ne suffit pas de donner seulement le nom de fichier.
En ce cas il faut donner le chemin complet de fichier

Essai
$HOME/Desktop/cours_4.pdf

ou

$HOME/Bureau/cours_4.pdf
0
sisimouhamed
3 mai 2009 à 20:28
au moment où j'appelle ùon programme je donne d'abord le nom du script puis qui est exo.sh puis je donne le chemin du fichier mais j'aurais comme message bash:exo.sh:commande introuvable
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
3 mai 2009 à 20:30
Salut,

Tu doit appeler ton script avec ./exo.sh et pas exo.sh
0
sisimouhamed
3 mai 2009 à 20:35
Toujours le probleme n'est pas encore resolut voila ce que ça affiche:
cheikh@ubuntu:~$ ./exo.sh $HOME/Desktop/cours_4.pdf
Donnez un nom de fichier:/home/cheikh/Desktop/cours_4.pdf
wc: /home/cheikh/Desktop/cours_4.pdf: Aucun fichier ou dossier de ce type
Fichier /home/cheikh/Desktop/cours_4.pdf contient mots
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
3 mai 2009 à 20:38
Re,

Affiche
ls -l /home/cheikh/Desktop/cours_4.pdf

aussi
find $HOME -name '*cours_4.pdf'
0
sisimouhamed
3 mai 2009 à 21:01
le code du programme que vous m'avez proposer marche maintenant c'etait moi qui n'avait pas mis le fichier dans le bureau d'ubuntu.Le fichier se trouver dans le bureau de windows.Mais dites moi j'ai creer un fichier nommer exemple.odt dont j'ai ecris de dans cheikh sidy mouhamed cisse ei si j'appele mon programme exo.sh en lui donnant comme parametre $HOME/Desktop/exemple.sh il me donne 127 mots.pourquoi?
0