Inserer un fichier bash dans un fichier bash
Résolu/Fermé
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
-
18 août 2012 à 01:58
dubcek Messages postés 18784 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 avril 2025 - 18 août 2012 à 14:51
dubcek Messages postés 18784 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 avril 2025 - 18 août 2012 à 14:51
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
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
8 réponses
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
Modifié par jisisv le 18/08/2012 à 03:18
Modifié par jisisv le 18/08/2012 à 03:18
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)
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
18 août 2012 à 12:01
18 août 2012 à 12:01
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.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
18 août 2012 à 12:09
18 août 2012 à 12:09
Salut,
Enlève le "sh" lorsque tu exécutes ton script.
Est-ce que "#! /bin/sh" est aussi le shebang de ton script ?
Enlève le "sh" lorsque tu exécutes ton script.
Est-ce que "#! /bin/sh" est aussi le shebang de ton script ?
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 18/08/2012 à 12:26
Modifié par xunil2003 le 18/08/2012 à 12:26
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.
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
Modifié par dubcek le 18/08/2012 à 12:30
Modifié par dubcek le 18/08/2012 à 12:30
hello
sh ne connait pas source, utiliser .
bash connait source
sh ne connait pas source, utiliser .
bash connait source
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
18 août 2012 à 12:49
18 août 2012 à 12:49
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.
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
18 août 2012 à 13:06
18 août 2012 à 13:06
$ ./a hello from a hello from b $ $ cat a #!/bin/bash echo hello from a source ./b $ cat b #!/bin/bash echo hello from b $
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
18 août 2012 à 13:09
18 août 2012 à 13:09
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 $
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 18/08/2012 à 14:05
Modifié par xunil2003 le 18/08/2012 à 14:05
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.
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
18 août 2012 à 14:19
18 août 2012 à 14:19
fichier Windows avec des ^M en fin de lignes ?
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 18/08/2012 à 14:50
Modifié par xunil2003 le 18/08/2012 à 14:50
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.
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
18 août 2012 à 14:51
18 août 2012 à 14:51
effectivement, en tapant sh script, il sera exécuté par sh même avec #!/bin/bash au début