Script shell et passage d'un fichier en argum
Richard.M
Messages postés
105
Date d'inscription
Statut
Membre
Dernière intervention
-
jivef Messages postés 927 Date d'inscription Statut Membre Dernière intervention -
jivef Messages postés 927 Date d'inscription Statut Membre Dernière intervention -
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 ;)
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:
- Script shell et passage d'un fichier en argum
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Classic shell - Télécharger - Personnalisation
7 réponses
Est ce que ca veut dire qu'il n'y a rien de spéciale a faire ?
jipicy
Messages postés
40842
Date d'inscription
Statut
Modérateur
Dernière intervention
4 896
Ben non, tu passes ton fichier en argument et le shell fera le reste.
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 ;-)
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 ;-)
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.
j'ai deja essayer ca et ca ne marche pas justement.
$ 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 $
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
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
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.
#**************
#!/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.
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.
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.