#1 Le 04/05/2010, à 19:16
- clochard
demande d'aide scripting bash
salut je voudrais lancer une application cli depuis n'importe que endroit tout en gardant l'application dans mon home, ex:
sudo su
cd /usr/local/bin
echo "#bin/bash" > application
echo "cd /home/clodo && perl app.pl" >> application
chmod +x application
alors donc ca fonctionne très bien, mais j'aimerais qu'il puisse lire ce qu'on lui dit, genre sans argument ca le lance tel quel mais avec arguments bein ca les passes, genre je suis dans /usr/share je fais application -a bla (je voudrais qu'il execute ce que je lui dit)
le tout sans avoir a mettre de -a ou autre commande dans le script juste qu'il lise et execute l'application avec le(s) parametre(s) rentré(s) (et de facon non interactive)
Hors ligne
#2 Le 04/05/2010, à 19:21
- sputnick
Re : demande d'aide scripting bash
Cette explication de clochard ne me satisfait pat tout à fait.
On connait pas trop le contexte.
Si j'essaye de lire entre les lignes, je dirait que tu essaye de lancer un script depuis n'importe quel répertoire, il faut donc qu'il soit dans le PATH.
Pour ça, tu crée un répertoire ~/bin et tu l'ajoute dans la variable PATH du ~/.bashrc :
export PATH=~/bin:$PATH
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 04/05/2010, à 19:28
- clochard
Re : demande d'aide scripting bash
en gros comme si je faisait un ln -s vers l'application et que j'executais le liens depuis son repertoire, sauf que un ln -s dans /usr/local/bin ca n'est pas reconnu comme une application donc je peux l'executer que depuis /usr/local/bin et pas ailleurs.
je vais tester sinon le truc de la variable path dans bash.rc
Hors ligne
#4 Le 04/05/2010, à 20:04
- clochard
Re : demande d'aide scripting bash
bon effectivement ca fonctionne le truc du path, mais c'est pas top, en fait c'est bien si tous les binaires se trouvent aux meme endroit, mais si on a des applications dans des sous repertoires etc ca devient ingérable
Hors ligne
#5 Le 04/05/2010, à 20:51
- Totor
Re : demande d'aide scripting bash
t'as pas le choix...
et puis, il suffit d'être organisé... si tu commences à disperser tes scripts, c'est là que ça va être ingérable
une autre solution, c'est de faire des alias ou de faire un script qui génère dynamiquement ton PATH avec toutes les arborescences que tu souhaites...
du style :
PATH=$PATH:$(find ~/bin/ ~/scripts/ -mindepth 1 -type d -printf "%p:"|sed 's/:$//')
-- Lucid Lynx --
Hors ligne
#6 Le 04/05/2010, à 21:15
- clochard
Re : demande d'aide scripting bash
je comprend pas trop pourquoi c'est pas possible, si je fous le script dans /usr/local/bin et qu'il pointe vers mon application dans ~/ il suffirait juste qu'ils soit apte a l'executer si aucun argument passé, et de l'executer avec des arguments si je rentre un truc dans le shell. En gros faut qu'il arrive a lire ce que j'ecris et qu'il le mette a la suite de ma commande de base.
Enfin je vois ca comme ca moi
genre avec "read"
Dernière modification par clochard (Le 04/05/2010, à 21:20)
Hors ligne
#7 Le 04/05/2010, à 21:35
- clochard
Re : demande d'aide scripting bash
genre en francais ca donnerait:
variable=appli.pl
deplacement dans le repertoire de appli.pl
si "variable" lu sans autre arguments, executer perl appli.pl --help
sinon lire la ligne de commande et executer "perl variable + cli"
et ensuite reste plus cas mettre ca dans /usr/local/bin et je peux l'executer de partout (sans mettre directement appli.pl dans /usr/local/bin)
?
Dernière modification par clochard (Le 04/05/2010, à 21:35)
Hors ligne