Ecrire script bash dans un script bash
Résolu
Sam
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrais écrire un script bash qui prend plusieurs arguments et qui à partir de ces arguments me génère un autre script bash (C'est tordu mais j'utilise cette méthode car j'appelle crontab à la fin de mon script afin de exécuter plusieurs fois à une intervalle prédéfini le script généré dans un fichier) .
Mon problème, c'est que j'utilise
echo "mon script ... " > nom_du_script.sh
pour générer le script et que lorsque je "compile" il me remet à la figure le script généré avec à la fin un "not found".
Si quelqu'un connaît ce problème ?
Je voudrais écrire un script bash qui prend plusieurs arguments et qui à partir de ces arguments me génère un autre script bash (C'est tordu mais j'utilise cette méthode car j'appelle crontab à la fin de mon script afin de exécuter plusieurs fois à une intervalle prédéfini le script généré dans un fichier) .
Mon problème, c'est que j'utilise
echo "mon script ... " > nom_du_script.sh
pour générer le script et que lorsque je "compile" il me remet à la figure le script généré avec à la fin un "not found".
Si quelqu'un connaît ce problème ?
A voir également:
- Ecrire script bash dans un script bash
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Bingo bash - Télécharger - Divers Jeux
- Ecrire en gras sur whatsapp - Guide
- Script cmd - Guide
8 réponses
Salut,
et que lorsque je "compile"
Euh... c'est à dire ?
Pour rappel les scripts bash sont dits interprétés et non compilés ;-\
Peut être qu'en voyant ton script on verrait mieux où ça cloche, non ?
et que lorsque je "compile"
Euh... c'est à dire ?
Pour rappel les scripts bash sont dits interprétés et non compilés ;-\
Peut être qu'en voyant ton script on verrait mieux où ça cloche, non ?
Salut,
Oui, c'est pour cela que j'ai mis "compiler" entre guillemets.
Je voulais effectivement dire lorsque je l'interprète.
Pour le code, je peux mettre son corps :
Oui, c'est pour cela que j'ai mis "compiler" entre guillemets.
Je voulais effectivement dire lorsque je l'interprète.
Pour le code, je peux mettre son corps :
if test $# -ne 3 then echo "Il me faut 3 arguments! " else echo " #!/bin/sh ... Long script bash qui interroge une base mysql en utilisant deux des trois arguments et qui parse des fichiers ..." > chemin/fichier/nom_fichier.sh crontab -e */$3 * * * * chemin/fichier/nom_fichier.sh >/dev/null 2>&1; fi
Oui, elles marchent toutes mais j'ai tout de même oublier de préciser que lorsque j'interprète mon code et qu'il me balance le script généré avec l'erreur "not found", le script généré met un blanc lorsque je réutilise une variable déclaré ce code. Exemple :
echo "#!/bin/sh test = 'mysql ...' test2 = $test + 1 // ici a la place de $test il me met un blanc alors que lorsque je l'exécute en dehors de ce script, j'obtient le bon résultat.
C'est tordu
Je vais dire comme toi: c'est tordu (mais je pense à autre chose). :(
mais j'utilise cette méthode car j'appelle crontab à la fin de mon script afin de exécuter plusieurs fois à une intervalle prédéfini le script généré dans un fichier
Quel rapport entre la méthode et crontab ?
un script doit être exécutable, pour être interprété par le noyau.
l'option -e de crontab ne fait pas ce que tu crois, regarde la page man!
Je vais dire comme toi: c'est tordu (mais je pense à autre chose). :(
mais j'utilise cette méthode car j'appelle crontab à la fin de mon script afin de exécuter plusieurs fois à une intervalle prédéfini le script généré dans un fichier
Quel rapport entre la méthode et crontab ?
un script doit être exécutable, pour être interprété par le noyau.
l'option -e de crontab ne fait pas ce que tu crois, regarde la page man!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Zipe31, je vais essayer de remplacer tous cela pour voir si cela change quelque chose.
Pour les espaces, je n'en ai pas mis, c'etait juste pour illustrer mon problème.
Pour qqchquicommenceparQ, il me semblait que crontab -e permet d'éditer la table cron ?
Je dit 'j'utilise cette méthode" car je ne voit pas comment demander à crontab d'exécuter le script dans lequel il est appelé.
Il me semble que cela pourrait causé quelques petits problèmes.
C'est pour cela que je crée un script dans ce script pour pouvoir ensuite appeler le script généré avec crontab.
Si j'ai fait une erreur la dessus, ton aide est la bienvenue ! :)
Pour les espaces, je n'en ai pas mis, c'etait juste pour illustrer mon problème.
Pour qqchquicommenceparQ, il me semblait que crontab -e permet d'éditer la table cron ?
Je dit 'j'utilise cette méthode" car je ne voit pas comment demander à crontab d'exécuter le script dans lequel il est appelé.
Il me semble que cela pourrait causé quelques petits problèmes.
C'est pour cela que je crée un script dans ce script pour pouvoir ensuite appeler le script généré avec crontab.
Si j'ai fait une erreur la dessus, ton aide est la bienvenue ! :)
Pour Zipe31, j'ai remplacer toutes les quotes inverses mais maintenant il me met :
J'ai vérifié et a priori, je n'ai aucun problème de parenthèses !
Syntax error: "(" unexpected (expecting ")")
J'ai vérifié et a priori, je n'ai aucun problème de parenthèses !
Le shell : /bin/bash (c'est bien la commande echo $SHELL pour savoir, j'ai un doute)
Et le système : Debian (Dernière version)
Et le système : Debian (Dernière version)
Je dit 'j'utilise cette méthode" car je ne voit pas comment demander à crontab d'exécuter le script dans lequel il est appelé.
[...]
C'est pour cela que je crée un script dans ce script pour pouvoir ensuite appeler le script généré avec crontab.
Je ne vois pas en quoi mettre un tourne vis au cul d'un autre tournevis va faire en sorte qu'il tourne plus régulièrement.
Cette "logique" m'échappe.
[...]
C'est pour cela que je crée un script dans ce script pour pouvoir ensuite appeler le script généré avec crontab.
Je ne vois pas en quoi mettre un tourne vis au cul d'un autre tournevis va faire en sorte qu'il tourne plus régulièrement.
Cette "logique" m'échappe.