J'ai tenté avec difficulté car je maîtrise pas beaucoup le shell bash ( la syntaxe m'y apparaît compliquée entre les ', les ", les $ , les { et autre ! , etc... ). Bref, j'ai quand même avec l'aide diesel (merci à lui) réussi à faire tourner mon script. Mais il faudrait le tester : « C'est votre mission si vous l'acceptez ».
De quoi s'agit-il ?
C'est ce que j'appelle avec modestie un script pour compiler des scripts bash en exécutables directs. Bon, je n'ai rien inventé là, ça existe peut-être mais perso je le faisais à la main avant.
On a parfois le besoin de protéger des regards indiscrets nos scripts qui aident à la sécurisation, un exécutable compilé à partir du C bloquera la majorité sauf les gens aguerris à cette technique.
Donc mon script nommé "compil_moi" demande à l'utilisateur d'entrer le script qu'il veut compiler. Trois fichiers sont alors créés : le script avec l'extension .x, le script avec l'extension .x.c (ce qui nous intéresse pour la compilation du C) et enfin l'exécutable avec l'extension .e
Je n'ai pas pensé à supprimer les deux premiers quand l'exécutable est construit. je rajouterai plus tard quand les tests seront finis c'est à dire quand ce petit script, écrit à la truelle, aura été testé par quelques un(e)s d'entre-vous.
Donc si vous avez le temps et l'envie testez mon petit "compil_moi" dont le code suit :
Code : Tout sélectionner
#!/bin/bash
echo "Création d'un executable (extension .e) à partir d'un script bash de même nom."
echo "°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
echo ""
# Demander à l'utilisateur le fichier et son chemin complet à compiler avec shc
echo "Veuillez entrer le chemin du script à compiler (peut se faire par copier/coller à la souris) :"
read chemin_fichier
# Enlèver les ' au début et à la fin du chemein s'il y en a.
chemin_fichier=${chemin_fichier#\'}
chemin_fichier=${chemin_fichier%\'}
# Se positionner dans le dossier contenant le script à compiler
chemin=$(dirname "$chemin_fichier")
# Enlèver les ' au début et à la fin du chemein s'il y en a.
chemin=${chemin#\'}
chemin=${chemin%\'}
cd "$chemin"
# Effectuer la compilation avec shc
shc -v -f $chemin_fichier
# créer le fichier exécutable de même nom que le script mais avec l'extension .e
touch "${chemin_fichier%.*}.e"
#compilation du code c obtenu avec shc
gcc *.c -o *.e
exit
Toutes vos critiques, toutes vos corrections, toutes vos améliorations seront les bienvenues et m'aideront à me familiariser avec le shell.
Bonne semaine à toutes et tous.