Inserer un fichier bash dans un fichier bash
Résolu
xunil2003
Messages postés
766
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans mon script bash je voudrai faire un include comme dans le langage php
j'ai essayé avec ceci mais ca ne marche pas
Comment faut il faire avec bash ?
Merci
Dans mon script bash je voudrai faire un include comme dans le langage php
j'ai essayé avec ceci mais ca ne marche pas
source /home/serveur/Domotique/ordres/mysql/insert.sh
Comment faut il faire avec bash ?
Merci
8 réponses
-
Avec bash, la commande interne source permet d'interpréter le contenu d'un autre fichier ,dan l'environnement du script appelant , ce qui correspond à inclure le source du script ou fichier appelé.
johand@osiris: ~/tmp $ GNU bash, version 4.2.36(1)-release (x86_64-pc-linux-gnu) johand@osiris: ~/tmp $ help source source: source nom_fichier [arguments] Exécute des commandes depuis un fichier dans le shell actuel. Lit et exécute des commandes depuis NOMFICHIER dans le shell actuel. Les éléments dans $PATH sont utilisés pour trouver le répertoire contenant NOMFICHIER. Si des ARGUMENTS sont fournis, ils deviennent les paramètres de position lorsque NOMFICHIER est exécuté. Code de sortie : Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le code d'échec si NOMFICHIER ne peut pas être lu
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin) -
Bonjour,
Je ne comprend pas ce qu'il faut faire ?
Quand j'execute mon script bashserveur@debian:~$ sh /home/serveur/Domotique/ordres/mysql/e1-off.sh /home/serveur/Domotique/ordres/mysql/e1-off.sh: 106: source: not found Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
avec ceci dans le script qui correspond a la ligne 106source /home/serveur/Domotique/ordres/mysql/insert2.sh
il m'affiche/home/serveur/Domotique/ordres/mysql/e1-off.sh: 106: source: not found
Merci. -
Bonjour
Dans e1-off.sh la ou je veux inclure le fichier "inser2.sh" il y a bien#!/bin/bash
Dans inser2.sh#!/bin/bash #---------------TEST ---------------- echo "ceci est un test" echo "Si vous voyez ces lignes c'est que le fichier insert2.sh et inseré dans le code"
Sans le sh c'est pareil.source /home/serveur/Domotique/ordres/mysql/insert2
Merci. -
hello
sh ne connait pas source, utiliser .
bash connait source -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
bonjour,
Depuis le shell ça marche serveur@debian:~$ source /home/serveur/Domotique/ordres/mysql/insert2.sh ceci est un test Si vous voyez ces lignes c'est que le fichier insert2.sh et inseré dans le code serveur@debian:~$
Mais quel est la solution pour y faire fonctionner depuis un script bash ?
Pouvez vous me donner un exemple ?
Comment puis je faire depuis un script bash ?
Y doit bien y avoir une solution ?
Merci.-
-
Re-
Il n'y a rien de spécial à faire, ça doit être un autre problème à ton niveau, mais lequel ???
Pour exemple :
$ ls foo.sh insert.sh $ cat foo.sh #!/bin/bash source insert.sh $ cat insert.sh #!/bin/bash #---------------TEST ---------------- echo "ceci est un test" echo "Si vous voyez ces lignes c'est que le fichier insert2.sh et inseré dans le code" $ ./foo.sh ceci est un test Si vous voyez ces lignes c'est que le fichier insert2.sh et inseré dans le code $
-
-
Bonjour,
J'ai donné les droits au fichier principal "e1-off.sh" pour qu'il soit executable pour tout le monde
root@debian:~# chmod ugo+x /home/serveur/Domotique/ordres/mysql/e1-off.sh root@debian:~#
puis je l'ai executé et ça marche
serveur@debian:~$ /home/serveur/Domotique/ordres/mysql/e1-off.sh ceci est un test Si vous voyez ces lignes c'est que le fichier insert2.sh et inseré dans le code Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
jusque là c'etait pour faire un test, maintenaint j'inserer dans le code le vrai code.
Dans le fichier e1-off.shsource /home/serveur/Domotique/ordres/mysql/insert.sh
Je donne les droits au fichier "insert.sh" pour qu'il soit executable pour tout le monderoot@debian:~# chmod ugo+x /home/serveur/Domotique/ordres/mysql/insert.sh root@debian:~#
le fichier "insert.sh" contient#!/bin/bash #--------------- RECUPERATION DE LA VARIABLE DU PROGRAMME QUI EXECUTE CE FICHIER ---------------- case "$PROGRAMME" in Asterisk) programme="Asterisk" ;; Crontab) programme="Crontab" ;; php) programme="PHP" ;; "") programme="Script bash" ;; esac
Puis j'execute le script principal en simple utilisateur, çà marche passerveur@debian:~$ sh /home/serveur/Domotique/ordres/mysql/e1-off.sh /home/serveur/Domotique/ordres/mysql/e1-off.sh: 92: source: not found Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
La ligne 92 correspond àsource /home/serveur/Domotique/ordres/mysql/insert.sh
Puis j'execute le script principal en root, là ça marcheroot@debian:~# /home/serveur/Domotique/ordres/mysql/e1-off.sh Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono root@debian:~#
Je comprend pas pourquoi il ne marche pas en temps que simple utilisateur alors qu'avec root ça marche et pourtant je l'ai rendu executable pour tout les utilisateurs ?
Les droitsserveur@debian:~$ ls -alF /home/serveur/Domotique/ordres/mysql total 136 drwxr-xr-x 2 root root 4096 18 août 12:41 ./ drwxr-xr-x 3 serveur serveur 4096 1 août 21:30 ../ -rwxr-xr-x 1 root root 3992 18 août 13:09 e1-off.sh* -rwxr-xr-x 1 root root 224 18 août 12:42 insert2.sh* -rwxr-xr-x 1 root root 259 30 juil. 05:48 insert.sh*
Merci. -
fichier Windows avec des ^M en fin de lignes ?
-
Bonjour,
C'est moi qui a merdé.
En faite il faut taperserveur@debian:~$ /home/serveur/Domotique/ordres/mysql/e1-off.sh Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
vu qu'il est exécutable, au lieu deserveur@debian:~$ sh /home/serveur/Domotique/ordres/mysql/e1-off.sh /home/serveur/Domotique/ordres/mysql/e1-off.sh: 92: source: not found Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
Alors que j'aurais dû faire à la place de sh au dèbut mettre bashserveur@debian:~$ bash /home/serveur/Domotique/ordres/mysql/e1-off.sh Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-off.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
Merci, execusez moi du dèrangement.