Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/10/2014, à 16:25

Ubis

Exercice : Script Shell problème

Bonjour j'ai un tp à faire, je bloque à un exercice :

Exercice

J'ai réussi la 1.

#!/bin/sh

if [ $# -ge 1 ]
then
for i
do
ps -C $i
done

else
echo "pas d'argument"
exit 1
fi

exit 0

La 2. je bloque je sais pas comment faire avec les virgules, quand j’exécute j'ai un message d'erreur.

#!/bin/sh

if [ $# -ge 1 ]
then
for i
do
VAR="$VAR$i," <- Le problème est ici
done
ps -C $VAR
else
echo "pas d'argument"
exit 1
fi

exit 0

Pour vérifier la sortir j'ai mis dans le script : echo ps -C $VAR
J'obtiens : ps -C bash,geany, <- C'est la dernière virgule qui gène comment l'enlever ?

Pour executer je fait :
./cmd_v1.sh bash geany <- Pas de problème
./cmd_v2.sh bash geany <- erreur ( ERROR: Improper list. )



Merci d'avance

Hors ligne

#2 Le 30/10/2014, à 16:40

pingouinux

Re : Exercice : Script Shell problème

Bonjour,

$ VAR="bash,geany,"

$ echo "$VAR"
bash,geany,

$ VAR=${VAR%?}

$ echo "$VAR"
bash,geany

Hors ligne

#3 Le 05/11/2014, à 19:41

sputnick

Re : Exercice : Script Shell problème

Si vous n'avez pas vu les expansions de paramètres de bash en cours, utilise plutot sed :


$ VAR="bash,geany,"
$ VAR=$(echo "$VAR" | sed 's/,$//')
$ echo $VAR
bash,geany

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne