#!/bin/bash
# Demande à l'utilisateur le chemin du fichier à compiler avec shc
echo "Veuillez entrer le chemin du script à compiler :"
read chemin_fichier
# Se positionne dans le dossier contenant le script
chemin=$(dirname "$chemin_fichier")
cd "$chemin"
# Effectue la compilation avec shc
shc -v -f $chemin_fichier
Donc je souhaite saisir un fichier avec son chemin, me logger dans le dossier du fichier puis compiler le fichier avec shc mais...
Le résultat après lancement du script : deux erreurs liées au chemin du fichier :
Veuillez entrer le chemin du script à compiler :
'/home/blanco/Bureau/CHANTIER/essai.sh'
/home/blanco/Bureau/CHANTIER/compile_moi.sh: ligne 9 : cd: $chemin: Aucun fichier ou dossier de ce type
shc: No such file or directory
Merci de m'aider à corriger et à comprendre mes erreurs.
Mini PC Geekom i5 / 16 giga Bookworm + Mate
Fidèle à Debian depuis la version 8, après Ubuntu.
Effectivement, tu as raison. Sans ces simples quotes ça fonctionne bien.
Merci pour la solution.
En revanche comment éviter ces quotes quand on saisit à la souris dans le gestionnaire de fichiers Caja, le fichier par copier/coller ? Je peux passer par un éditeur de texte mais ça ne rend pas pratique le truc. Un autre moyen existe peut-être ?
Mini PC Geekom i5 / 16 giga Bookworm + Mate
Fidèle à Debian depuis la version 8, après Ubuntu.
#!/bin/bash
# Demande à l'utilisateur le chemin du fichier à compiler avec shc
echo "Veuillez entrer le chemin du script à compiler :"
read chemin_fichier
chemin_fichier=${chemin_fichier#\'}
chemin_fichier=${chemin_fichier%\'}
# Se positionne dans le dossier contenant le script
chemin=$(dirname "$chemin_fichier")
cd "$chemin"
# Effectue la compilation avec shc
shc -v -f $chemin_fichier
#!/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
chemin_fichier=${chemin_fichier//\'/} # Remplace tous les ' par rien, s'il y en a.
# Se positionner dans le dossier contenant le script à compiler
chemin=$(dirname "$chemin_fichier")
chemin=${chemin//\'/} # Remplace tous les ' par rien, s'il y en a.
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
Je ne l'ai testé que sur un script bash hyper simpliste. Des tests à venir sur des scripts plus gros.
Bon dimanche à tous et merci encore à Jean-Marie dit diesel, ici dans ce chouette forum.
Mini PC Geekom i5 / 16 giga Bookworm + Mate
Fidèle à Debian depuis la version 8, après Ubuntu.
excuse-moi je n'avais pas vu ta réponse à propos des quotes simples. Tu as raison de n'enlever que les quotes de début et de fin. C'est beaucoup plus propre.
Donc je reprends ton conseil dans mon code final :
#!/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
Mini PC Geekom i5 / 16 giga Bookworm + Mate
Fidèle à Debian depuis la version 8, après Ubuntu.