Fonctions en Shell Debian/ubuntu/gentoo
Résolu
EminoMeneko
Messages postés
2499
Statut
Membre
-
EminoMeneko Messages postés 2499 Statut Membre -
EminoMeneko Messages postés 2499 Statut Membre -
Bonjour,
j'aimerai savoir pourquoi mon script marche impec sous debian et fait n'importequoi sur ubuntu ?
Quelles sont les solutions ?
Je vous passe mon code ici
Il n'y a pour l'instant qu'un début de squelette mais le problème c'est que malgré le mot clé function les fonctions sont exécutées les unes après les autres et si je laisse les parenthèses j'ai le droit à ce message...
A noter que sous Debian j'ai mis des parenthèses lors de la déclaration de mes fonctions.
A noter aussi que ce script sera utilisé sur un Live CD probablement créé à partir du System Rescue CD. (il semble que ça sera une gentoo donc d'après ce qu'on m'a dit)
Merci
j'aimerai savoir pourquoi mon script marche impec sous debian et fait n'importequoi sur ubuntu ?
Quelles sont les solutions ?
Je vous passe mon code ici
#!/bin/sh
#===============================================#
# Nom du fichier : sfdiskgui.sh #
# Description : Front-end basé sur sfdisk #
# Auteur : Eminomeneko #
# Date : 2008 #
# #
# Le script est un GUI utilisant sfdisk #
# permettant de manipuler la table des parti- #
# tions. #
#===============================================#
#===============================================#
# VARIABLES #
#===============================================#
# Création du fichier qui contiendra les choix de menu
# et mise du chemin dans une variable (simplicité et clareté du code)
touch /tmp/sfdiskgui && temp=/tmp/sfdiskgui
Titre="Outils de partitionnement de disque."
#===============================================#
# FONCTIONS #
#===============================================#
#===============================================#
# FONCTIONS DU MENU PRINCIPAL #
#===============================================#
function main_loop
{
dialog --clear --backtitle "$Titre" --title "Menu" \
--menu "Quelle action entreprendre ?" 20 80 5 \
"Creer" "Crée une nouvelle partition."\
"Modifier" "Modifie une partition."\
"Voir" "Affiche les information d'une partition."\
"Dump" "Dumper la table des partitions."\
"Quitter" "Quitte le programme." 2> $temp
choix=`cat $temp`
if [ $? = 0 ]
then
for i in `cat $temp`
do
case $i in
# Continuer est par défaut
# NB : les fonctions doivent être créés avant l'appel à celle-ci
# c'est pourquoi ils seront définis en début de fichier après les
# variables.
Creer)
main_creer;;
Modifier)
main_modif;;
Voir)
main_voir;;
Dump)
main_dump;;
Quitter)
dialog --msgbox "Fin du programme." 10 50
exit 0;;
esac
done
fi
}
function main_creer
{
dialog --backtitle "$Titre" --inputbox "Bloque de début de la partition" 10 50
dialog --backtitle "$Titre" --inputbox "Taile de la partition" 10 50
dialog --backtitle "$Titre" --inputbox "Type de partition" 10 20
main_loop
}
function main_modif
{
dialog --clear --backtitle "$Titre" \
--msgbox "Modifie une partition" 10 50
main_loop
}
function main_voir
{
dialog --clear --backtitle "$Titre" \
--msgbox "Voir les infos d'une partition" 10 50
main_loop
}
function main_dump
{
dialog --clear --backtitle "$Titre" --title "Dump de la Table des partition"\
--checklist "Choisissez les partitons" 10 50 5\
"ide1" "hda1" on \
"ide2" "hda2" off \
"ide3" "hda3" off \
"ide4" "hda4" off \
"sata1" "sda1" off \
"sata2" "sda2" off \
"sata3" "sda3" off \
"sata4" "sda4" off 2>$temp
for choix in `cat $temp`
do
# TODO A remplacer par l'action à effectuer
# Sauvegarde des tables de partitions choisies
dialog --clear --backtitle "$Titre" \
--msgbox "$choix" 10 10
done
main_loop
}
#===============================================#
# DIALOGUES #
#===============================================#
main_loop
Il n'y a pour l'instant qu'un début de squelette mais le problème c'est que malgré le mot clé function les fonctions sont exécutées les unes après les autres et si je laisse les parenthèses j'ai le droit à ce message...
prompt:~$ ./sfdiskgui.sh
./sfdiskgui.sh: 31: Syntax error: "(" unexpected
A noter que sous Debian j'ai mis des parenthèses lors de la déclaration de mes fonctions.
A noter aussi que ce script sera utilisé sur un Live CD probablement créé à partir du System Rescue CD. (il semble que ça sera une gentoo donc d'après ce qu'on m'a dit)
Merci
A voir également:
- Fonctions en Shell Debian/ubuntu/gentoo
- Classic shell - Télécharger - Personnalisation
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Linux mint ou ubuntu - Guide
- Ubuntu portable - Télécharger - Systèmes d'exploitation
- Shell addition ✓ - Forum Shell
2 réponses
essayer avec #!/bin/bash pour être sur
changer if [ $? = 0 ] par if [ $? -eq 0 ]
et j'ajouterais un ; après la dernière instruction de chaque fonction
{ list; }
Placing a list of commands between curly braces causes the list to be executed in the current shell context. No subshell is created. The semicolon (or newline) following list is required.
changer if [ $? = 0 ] par if [ $? -eq 0 ]
et j'ajouterais un ; après la dernière instruction de chaque fonction
{ list; }
Placing a list of commands between curly braces causes the list to be executed in the current shell context. No subshell is created. The semicolon (or newline) following list is required.