Script shell et passage d'un fichier en argum

Fermé
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 - 10 août 2010 à 20:07
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - 11 août 2010 à 05:17
Bonjour a tous ,


Voila, je voudrais savoir comment passer en argument un fichier "test.c", dans un script shell

ex :
je tape en commande: programme.sh test.c
*******************************************************************************
#!bin/bash

cat $1

exit
******************************************************************************

Ici $1 correspond au fichier test.c; Car ici le probleme c'est que $1(test.c) ne correspond qu'à une chaine de caracteres, et non au véritable fichier.

Merci pour vos réponses ;)
A voir également:

7 réponses

Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 8
10 août 2010 à 20:56
Est ce que ca veut dire qu'il n'y a rien de spéciale a faire ?
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
10 août 2010 à 20:59
Ben non, tu passes ton fichier en argument et le shell fera le reste.
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 897
10 août 2010 à 20:32
Salut,

Car ici le probleme c'est que $1(test.c) ne correspond qu'à une chaine de caracteres, et non au véritable fichier.
Tu peux préciser ta pensée s'il te plait, merci ;-)
0
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 8
10 août 2010 à 20:37
ben quand je vais lancer la commande "programme.sh test.c", l'argument test.c est considéré comme une chaine de caractere, autrement dit : Comment mon pc peut savoir que l'argument test.c correspond a un fichier qui existe bel,et bien.
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 897
10 août 2010 à 20:45
Ce n'est pas ton PC qui analyse l'argument mais le shell qui doit avoir une routine qui examine les arguments et en détermine l'origine avant de le traiter...
0
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 8
Modifié par Richard.M le 10/08/2010 à 21:05
j'ai deja essayer ca et ca ne marche pas justement.
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 897
10 août 2010 à 21:12
$ ls   # Listing répertoire
foo.sh*  plop             

$ cat plop   # Contenu fichier texte
alade tomate jambon purée       
salade purée tomate             
tomate jambon salade purée      
salade purée tomate jambon      
salade purée tomate             
purée jambon tomate salade
purée tomate salade
saladetomatejambonpurée
saladetomateknackpurée
saladetomatepuréejambonyaourt

$ cat foo.sh   # Contenu script
#! /bin/bash

cat $1

$ ./foo.sh plop   # Lancement script
alade tomate jambon purée
salade purée tomate
tomate jambon salade purée
salade purée tomate jambon
salade purée tomate
purée jambon tomate salade
purée tomate salade
saladetomatejambonpurée
saladetomateknackpurée
saladetomatepuréejambonyaourt

$
0
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 8
10 août 2010 à 21:57
merci pour ton aide
0

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

Posez votre question
Dans ton script il faut faire un test avec if, essaye cela.

if [-e $1]
then
echo 'Le fichier en argument existe'
else
echo 'Le fichier en argument est inexistant'
exit 1
fi

Je me suis inspiré de ce que j'ai trouvé ici :
http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Systeme/TDTP2003/tp03.html
0
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 8
10 août 2010 à 21:57
Merci pour la réponse et pour le lien
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
11 août 2010 à 05:17
Bonjour,

Le [ -e "$1" ] est intéressant, mais si c'est un répertoire, il va répondre positivement.
Il faut lui demander de tester qu'il s'agit bien d'un fichier ordinaire :
[ -f "$1" ]

A bientôt.
Cordialement.
Jonas.
0
J'ai mieux compris ta question, j'ai testé cela et ça marche.

#**************
#!/bin/bash

cat $1

#**************

Tu t'étais trompé tu avais mis #!bin/bash

Et si tu appel ton script test.sh n'oublie pas que pour le lancer il faux taper ./test.sh dans le bon répértoire, et qu'il faut rendre le fichier test.sh exécutable.
0
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 8
10 août 2010 à 21:57
Ok pas de soucis. Merci pour la réponse
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
Modifié par jivef le 11/08/2010 à 05:25
Bonjour,
Si ton fichier existe, alors $1 correspond au fichier.
S'il ne le trouve pas, c'est qu'il n'existe pas.
Dans ce cas, vérifie que le chemin est correct et que tu l'as bien écrit.

Tu peux perfectionner en mettant un test.

Affiche ton fichier s'il existe, sinon affiche un message disant que ton ficher n'existe pas.
#!/bin/bash
# Auteur :
# Version :
# Observation :
# test sur le premier argument.
# S'il existe et est un ficher ordinaire, alors afficher le contenu.
# Sinon afficher une erreur.
if [ -f "$1" ]
then
cat $1
else
echo " $1 n\'est pas un fichier ordinaire ou n\'existe pas."
echo " Merci d\'avoir joué avec nous."
fi

Note que j'ai forcé sur les commentaires, mais il faudra que tu t'habitue à le faire, pour faciliter la maintenance de tes scripts et programmes.

Dans la page de manuel de la commande "test" tu trouveras la syntaxe pour vérifier s'il s'agit d'un fichier, d'un répertoire, d'un poisson rouge, d'un lien ou d'un raton laveur.

L'option -r permet peut-être même de vérifier si le fichier est lisible...
A vérifier.

Bien cordialement.
Jonas.






Une idée reçue est souvent une idée morte.
0