Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/04/2021, à 16:27

zephyre123

[RESOLU]Aide pour faire un script ?

Bonjour,

Je lis un livre et je dois faire le programme = dansbin suivant :
En utilisant la commande unix ls et le mécanisme de redirection, écrire un programme shell dansbin prenant un nom de commande en argument et qui affiche
0 si cette commande est présente dans /bin, une valeur différente de 0 sinon.

Je me doute qu'il va falloir se servir du code de retour de la commande $?

Mais je ne vois pas comment faire pouvez m'aider ?

Je précise pour le moment je n'ai pas vu les structures de contrôles telles que les if et les boucles ni les tableaux.
Ainsi je ne vois pas comment faire sans if ?
Es ce que vous pensez que c'est possible ?

Dernière modification par zephyre123 (Le 19/04/2021, à 18:20)

Hors ligne

#2 Le 14/04/2021, à 16:32

Watael

Re : [RESOLU]Aide pour faire un script ?

tu parles d'un sujet !
un sujet doit être une synthèse de l'exposé.

se servir du code de retour de la commande $?

oui.

qu'as-tu essayé jusque là ?
expose tes difficultés, parce que je n'en vois pas.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 14/04/2021, à 16:40

zephyre123

Re : [RESOLU]Aide pour faire un script ?

Le souci c'est que pour que mon programme fonctionne je suis obligé de me déplacé dans le répertoire /bin voir ci dessous :

#!/bin/bash
# En utilisant la commande unix ls et le mécanisme de redirection, écrire un programme shell dansbin
# prenant un nom de commande en argument et qui affiche
# 0 si cette commande est présente dans /bin, une valeur différente de 0 sinon.

cd /bin
ls $1
echo $?

J'aimerai arriver au même résultat sans me déplacer dans le répertoire bin
Je pense que c'est la ou intervient la redirection mais je ne vois pas comment l'exploiter.
Il faudrait que je lance la commande ls $1 comme si j'étais dans le repertoire /bin sans bouger du repertoire courant et ça je ne sais pas comment faire.
Je crois que j'ai trouvé

Il suffit de faire
ls $1 < /bin

C'est ça ?

Dernière modification par zephyre123 (Le 14/04/2021, à 16:47)

Hors ligne

#4 Le 14/04/2021, à 17:08

zephyre123

Re : [RESOLU]Aide pour faire un script ?

J'ai testé ça fonctionne pas car la commande suivante :
ls < /bin ne permet pas d'afficher le contenu du repertoire /bin et je ne comprends pas d''ailleurs pourquoi ?
Avez vous une explication ?

Dernière modification par zephyre123 (Le 14/04/2021, à 17:10)

Hors ligne

#5 Le 14/04/2021, à 17:09

Watael

Re : [RESOLU]Aide pour faire un script ?

tu n'as pas besoin de te "déplacer".
la redirection n'intervient pas là, non.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 14/04/2021, à 17:09

pingouinux

Re : [RESOLU]Aide pour faire un script ?

Bonjour,
Si tu veux utiliser ls :

ls /bin/"$1"

Sinon, tu peux tester si le fichier existe et est exécutable :

test -x /bin/"$1"

Hors ligne

#7 Le 14/04/2021, à 17:11

zephyre123

Re : [RESOLU]Aide pour faire un script ?

Oui pingouinux mais le souci c'est que tu n'utilises pas de redirection alors que dans l'énoncé il dise de l'utiliser.

Hors ligne

#8 Le 14/04/2021, à 17:16

Watael

Re : [RESOLU]Aide pour faire un script ?

n'était-il pas dit que le résultat doit être envoyé dans un fichier ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 14/04/2021, à 17:32

zephyre123

Re : [RESOLU]Aide pour faire un script ?

Je ne vois pas ou intervient la redirection alors ?

watael a écrit :

n'était-il pas dit que le résultat doit être envoyé dans un fichier ?

Non ce n'est pas précisé dans l'énoncé.

Dernière modification par zephyre123 (Le 14/04/2021, à 17:34)

Hors ligne

#10 Le 14/04/2021, à 17:38

Watael

Re : [RESOLU]Aide pour faire un script ?

bon.
nom de l'auteur
titre du livre
photo de l'énoncé
edit: et, en profitant de l'élan : finEdit
ton numéro de carte bleu
ton code CB
lol

Dernière modification par Watael (Le 14/04/2021, à 18:54)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 14/04/2021, à 19:16

Tawal

Re : [RESOLU]Aide pour faire un script ?

Hello,

Je pense que c'est un truc du genre qui peut résoudre le problème :

#!/bin/bash

ls /bin/"$1" >/dev/null  2>&1
echo $?

exit 0

Edit: ou exit $? sans echo $?

Dernière modification par Tawal (Le 14/04/2021, à 19:20)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#12 Le 14/04/2021, à 19:28

Watael

Re : [RESOLU]Aide pour faire un script ?

bonne idée.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 14/04/2021, à 19:34

Tawal

Re : [RESOLU]Aide pour faire un script ?

Bah, y a tout ce qui est demandé :
- utiliser un argument positionnel
- utiliser ls
- uiliser les redirections
- renvoyer un code 0 si réussite ou autre valeur si échoue

Donc c'est exit $? qu'il faut à la fin wink

Et l'utilisation de ls  dans un script ne pose pas trop de souci ici.

Dernière modification par Tawal (Le 14/04/2021, à 19:35)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#14 Le 14/04/2021, à 19:38

Watael

Re : [RESOLU]Aide pour faire un script ?

le exit n'est pas requis.
le ls, lui, est requis, donc...
et puis, il n'est pas utilisé pour être parsé.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#15 Le 14/04/2021, à 19:54

Tawal

Re : [RESOLU]Aide pour faire un script ?

zephyre123 a écrit :

un nom de commande en argument et qui affiche
0 si cette commande est présente dans /bin

En effet, pas d'exit, mea culpa.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne