Inserer un fichier bash dans un fichier bash
Résolu
xunil2003
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 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
A voir également:
- Inserer un fichier bash dans un fichier bash
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
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é.
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
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 bash
avec ceci dans le script qui correspond a la ligne 106
Merci.
Je ne comprend pas ce qu'il faut faire ?
Quand j'execute mon script bash
serveur@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 106
source /home/serveur/Domotique/ordres/mysql/insert2.shil 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
Dans inser2.sh
Sans le sh c'est pareil.
Merci.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
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.
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 :
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
puis je l'ai executé et ça marche
jusque là c'etait pour faire un test, maintenaint j'inserer dans le code le vrai code.
Dans le fichier e1-off.sh
Je donne les droits au fichier "insert.sh" pour qu'il soit executable pour tout le monde
le fichier "insert.sh" contient
Puis j'execute le script principal en simple utilisateur, çà marche pas
La ligne 92 correspond à
Puis j'execute le script principal en root, là ça marche
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 droits
Merci.
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.sh
source /home/serveur/Domotique/ordres/mysql/insert.sh
Je donne les droits au fichier "insert.sh" pour qu'il soit executable pour tout le monde
root@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 pas
serveur@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 marche
root@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 droits
serveur@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.
Bonjour,
C'est moi qui a merdé.
En faite il faut taper
vu qu'il est exécutable, au lieu de
Alors que j'aurais dû faire à la place de sh au dèbut mettre bash
Merci, execusez moi du dèrangement.
C'est moi qui a merdé.
En faite il faut taper
serveur@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 de
serveur@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 bash
serveur@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.