#1 Le 19/11/2022, à 13:31
- azer2010
[résolu] Erreur retour script bash
bonjour à tous,
vous un petite problème que j'ai avec un script.
le script est codé en BASH afin de récupéré un/des processus (arguments) de son choix et
avoir le retour de la mémoire consommé en service.
mais il me retourne des erreurs (introuvable : que je trouve pas :} ) je pense qu'ils sont liers à ma structure de condition.je partage le bloc pour que vous puissez comprendre cette erreur et de m'expliqué par
une analyse de vos retour et surtout comprendre le problème (si simple à plusieurs...) ou avoir une/des alternatives de squelette pour le bloc je suis à l'écoute.
voici le structure @FILE ram.sh :
#!/bin/bash
#variable arguments
PROCESS="${@}"
if [[ -z ${PROCESS} ]];
then
# au lancement du script.
printf "%s\n" "Veuillez saisir un/des Noms de processus en paramètre "
else
# boucle pour lire l'ensemble de la variable
for EXPRESSION in $(echo ${PROCESS})
do
RAMCONSUME=$(ps -ely | awk -v process=${EXPRESSION} '$13 == process' | \
awk '{SUM += $8/1024} END {print SUM}' | cut -d '.' -f1)
if [[ -z ${RAMCONSUME} ]];
then
printf "%s\n" " [**Le Nom du processus est indisponible ou n'existe pas**] "
else
printf "\n%s\n" " RSS consommée pour ${EXPRESSION} : ${RAMCONSUME} MB"
fi
done
fi
exécution du script sur le Terminal Exemple avec 1 Argument :
toto@toto$ sudo ./'ram.sh' nemo
puis se que le script retourne une fois exécuté:
[sudo] Mot de passe de toto :
./ram.sh: 5: [[: not found
./ram.sh: 15: [[: not found
RSS consommée pour nemo : 123324 MB
à très vite de vous lire, bonne journée à tous.
Dernière modification par azer2010 (Le 22/12/2022, à 18:02)
Hors ligne
#2 Le 19/11/2022, à 15:04
- bruno
Re : [résolu] Erreur retour script bash
Bonjour,
On peut reproduire cette erreur en faisant exécuter ton script par dash à la place de bash.
#3 Le 19/11/2022, à 15:24
- azer2010
Re : [résolu] Erreur retour script bash
bonjour bruno,
je n'ai pas compris ta réponse, peut tu etre un peux plus explicite stp.
Hors ligne
#4 Le 19/11/2022, à 15:24
- geole
Re : [résolu] Erreur retour script bash
Bonjour
Je n'ai pas le même style d'erreur
a@b:~$ ./ram.sh
./ram.sh: ligne 13: fin de fichier (EOF) prématurée lors de la recherche du « ) » correspondant
./ram.sh: ligne 23: erreur de syntaxe : fin de fichier prématurée
a@b:~$ ./ram.sh bbbbb
./ram.sh: ligne 13: fin de fichier (EOF) prématurée lors de la recherche du « ) » correspondant
./ram.sh: ligne 23: erreur de syntaxe : fin de fichier prématurée
cat -n ./ram.sh
1 #!/bin/bash
2 #variable arguments
3 PROCESS="${@}"
4
5 if [[ -z ${PROCESS} ]];
6 then
7 # au lancement du script.
8 printf "%s\n" "Veuillez saisir un/des Noms de processus en paramètre "
9 else
10 # boucle pour lire l'ensemble de la variable
11 for EXPRESSION in $(echo ${PROCESS})
12 do
13 RAMCONSUME=$(ps -ely | awk -v process=${EXPRESSION} '$13 == process' | \
14
15 if [[ -z ${RAMCONSUME} ]];
16 then
17 printf "%s\n" " [**Le Nom du processus est indisponible ou n'existe pas**] "
18 else
19 printf "\n%s\n" " RSS consommée pour ${EXPRESSION} : ${RAMCONSUME} MB"
20 fi
21 done
22 fi
a@b:~$
a@b:~$
Il faudrait mettre une parenthèse fermante dans la ligne 13
Dernière modification par geole (Le 19/11/2022, à 17:58)
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne
#5 Le 19/11/2022, à 15:34
- azer2010
Re : [résolu] Erreur retour script bash
Bonjour
Je n'ai pas le même style d'erreura@b:~$ ./ram.sh ./ram.sh: ligne 13: fin de fichier (EOF) prématurée lors de la recherche du « ) » correspondant ./ram.sh: ligne 23: erreur de syntaxe : fin de fichier prématurée
a@b:~$ ./ram.sh bbbbb
./ram.sh: ligne 13: fin de fichier (EOF) prématurée lors de la recherche du « ) »...
bonjour geole merci de ton retour mais j'avais oublier un bout de code sur la ligne 13,
que je vien de réctifié suite a ton observation relance le et donne moi ton avis.
voici le rajout :
awk '{SUM += $8/1024} END {print SUM}' | cut -d '.' -f1)
Hors ligne
#6 Le 19/11/2022, à 16:12
- Watael
Re : [résolu] Erreur retour script bash
#!/bin/bash
if (($#))
then
for commande do
consoRAM=( $(ps h -C $commande -o rss) )
test -n "${consoRAM[0]}" || { >&2 echo "$commande non trouvée"; continue;}
totalConsoRAM=$(( $(IFS='+'; echo "${consoRAM[*]}") ))
LC_NUMERIC=C printf '%s : %.0fMB\n' "$commande" $(bc -l <<<"rslt=$totalConsoRAM/1024; scale=2; rslt/1")
done
else
>&2 echo "il faut indiquer au moins un nom de commande"
exit 1
fi
je voulais seulement corriger la ligne ps, et tout le reste est aussi parti à la poubelle.
Dernière modification par Watael (Le 20/11/2022, à 11:15)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#7 Le 19/11/2022, à 16:52
- geole
Re : [résolu] Erreur retour script bash
Après rectification, je ne sais pas reproduire.
a@b:~$ ./ram.sh
Veuillez saisir un/des Noms de processus en paramètre
a@b:~$ ./ram.sh top
RSS consommée pour top : 4,30469 MB
a@b:~$ ./ram.sh top top
RSS consommée pour top : 4,30469 MB
RSS consommée pour top : 4,30469 MB
a@b:~$ cat ram.sh
#!/bin/bash
#variable arguments
PROCESS="${@}"
if [[ -z ${PROCESS} ]];
then
# au lancement du script.
printf "%s\n" "Veuillez saisir un/des Noms de processus en paramètre "
else
# boucle pour lire l'ensemble de la variable
for EXPRESSION in $(echo ${PROCESS})
do
RAMCONSUME=$(ps -ely | awk -v process=$EXPRESSION '$13 == process' | awk '{SUM += $8/1024} END {print SUM}' | cut -d '.' -f1) \
if [[ -z ${RAMCONSUME} ]];
then
printf "%s\n" " [**Le Nom du processus est indisponible ou n'existe pas**] "
else
printf "\n%s\n" " RSS consommée pour ${EXPRESSION} : ${RAMCONSUME} MB"
fi
done
fi
a@b:~$
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne
#8 Le 19/11/2022, à 17:31
- bruno
Re : [résolu] Erreur retour script bash
bonjour bruno,
je n'ai pas compris ta réponse, peut tu etre un peux plus explicite stp.
L'utilisation des doubles crochets [[ est spécifique à certains interpréteurs de commandes, bash entre autres, et n'est pas dans la norme POSIX.
Si tu exécutes ton script avec un interpréteur qui ne prend pas en charge les [[, comme dash cela provoque une erreur.
Il faut t'assurer que tu utilise bien bash avant de lancer ton script :
echo $SHELL
ls -l /bin/bash
#9 Le 19/11/2022, à 18:49
- Watael
Re : [résolu] Erreur retour script bash
$SHELL, par défaut, indique le shell de connexion de l'utilisateur.
le shell utilisé dans un script dépend du shebang inscrit sur la première ligne du script.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#10 Le 20/11/2022, à 02:17
- MicP
Re : [résolu] Erreur retour script bash
Bonjour Watael
Dans ton message #6, Il manque un double guillemets juste après la variable
"${consoRAM[*]}
Hors ligne
#11 Le 20/11/2022, à 11:15
- Watael
Re : [résolu] Erreur retour script bash
corrigé.
merci.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#12 Le 20/11/2022, à 12:47
- Hizoka
Re : [résolu] Erreur retour script bash
Salut,
perso quand je galère avec des erreurs que je ne trouve pas, j'utilise : https://www.shellcheck.net/
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#13 Le 20/11/2022, à 13:41
- Tawal
Re : [résolu] Erreur retour script bash
Shellcheck est aussi installable sur le PC, plutôt que de passer par le navigateur.
https://packages.ubuntu.com/jammy/shellcheck
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#14 Le 20/11/2022, à 19:36
- Hizoka
Re : [résolu] Erreur retour script bash
Ah, je ne connaissais pas !
Merci
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#15 Le 21/11/2022, à 08:36
- matrix-bx
Re : [résolu] Erreur retour script bash
Comme beaucoup j'utilisais souvent "echo" au début, puis on m'a montré "set -xv", je n'utilise plus que ça depuis (à de très rares exceptions près).
Utilisations des balises de mises en formes.
Hors ligne
#16 Le 21/11/2022, à 14:50
- Tawal
Re : [résolu] Erreur retour script bash
shellcheck et set -xv sont complémentaires.
Le 1er vérifie la syntaxe du script.
Le 2ième permet de vérifier le déroulement du script.
Ce n'est pas pareil.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#17 Le 09/12/2022, à 11:43
- azer2010
Re : [résolu] Erreur retour script bash
Merci de vos Informations et du partage.
Hors ligne