Pages : 1
#1 Le 22/08/2007, à 20:22
- Sebome
[RESOLU] help script shell
Bonjour à tous
J'ai deux question...
1)Existe t'il une commande pour récupérer la longueur d'une chaîne de caractère?
2)Comment récupérer les 6 premier caractères d'une chaîne de caractère?
J'ai essayé ceci mais ça ne fonctionne pas...
TOTO="abcdefghijklm"
VAR1=;
for(( i=0 ; i<7 ; i++ )) #pb ici : Syntax error: Bad for loop variable
do
VAR1=$VAR1${$TOTO:$i:1}
done
Je vous remercie d'avance
Cordialement Sebome
Dernière modification par Sebome (Le 23/08/2007, à 19:44)
Hors ligne
#2 Le 22/08/2007, à 20:50
- Sebome
Re : [RESOLU] help script shell
up!
Aucune idée?
Hors ligne
#3 Le 22/08/2007, à 21:02
- alexduf
Re : [RESOLU] help script shell
Salut
pour récupérer la longueur d'une chaine de caractères, regarde la commande wc (word count)
il existe un certain nombre d'options dont le nombre de caractère (je le connais pas de tête, mais un man wc devrais te te fixer)
ensuite pour les boucles il me semble que cela ne fonctionne pas comme en C ou en java. Pour les for cela fonctionne de la manière suivante :
for VARIABLE in LISTE_DE_VALEUR
do
LISTE_DE_COMMANDES
done
je te dis ca de tête, donc à vérifier ;-)
[edit]le post de abetsic est bien plus efficace ^^suis donc ses conseils[/edit]
Dernière modification par alexduf (Le 22/08/2007, à 21:08)
Hors ligne
#4 Le 22/08/2007, à 21:04
- abetsic
Re : [RESOLU] help script shell
tu peux faire un truc du genre
echo ${#ta_variable}
qui te renverra le nombre de caractères de ta_variable et
echo ${ta_variable:0:6}
qui te renverra les 6 premiers caractères de ta_variable.
edit : en supposant que tu utilises bash comme interpreteur. Tu peux faire man bash pour plus d'infos.
Dernière modification par abetsic (Le 22/08/2007, à 21:05)
Hors ligne
#5 Le 22/08/2007, à 21:10
- Sebome
Re : [RESOLU] help script shell
Merci beaucoup pour vos réponses, je vais regarder ca.
oui c'est du bash (je débute en bash)
Hors ligne
#6 Le 22/08/2007, à 21:28
- Sebome
Re : [RESOLU] help script shell
j'ai toujours un problème que je ne comprend pas trop...
si je fais directement dans la console :
$ NOM=abcdefghijkl
$ echo ${NOM:0:6}
abcdef
et dans mon script (test.sh)ça ne marche pas
#!/bin/sh
NOM=$1
echo ${NOM:0:6}
sh test.sh abcdefghijkl
test.sh: 3: Syntax error: Bad substitution
Pourriez vous éclairer ma lanterne?
Hors ligne
#7 Le 22/08/2007, à 21:36
- abetsic
Re : [RESOLU] help script shell
Parce que /bin/sh est un lien symbolique vers /bin/dash qui est un interpréteur différent de bash. Remplace simplement /bin/sh par /bin/bash, ça devrait résoudre ton problème.
Hors ligne
#8 Le 22/08/2007, à 22:30
- Sebome
Re : [RESOLU] help script shell
je suis arrivé au résultat voulu mais ça me mets une erreur...
Le but de mon script est de générer un login en fonction du nom et du prenom de la personne
voivi le script
#!/bin/bash
#genere un login du type
#si longueur nom < 6 : <nom>_<premiere_caractere_du_prenom>
#sinon : <6_premier_caractere_du_nom>_<premiere_caractere_du_prenom>
if [ $# != 2 ]; then
echo -n "Entrer le nom : "
read NOM
echo -n "Entrer le prenom : "
read PRENOM
echo
echo
else
NOM=$1
PRENOM=$2
fi
SEP="_"
if [ ${#NOM} < 7 ]; then
LOGIN=$NOM
else
LOGIN=${NOM:0:6}
fi
LOGIN=$LOGIN$SEP${PRENOM:0:1}
echo "*************************"
echo "$NOM $PRENOM"
echo "*************************"
echo "Login : " $LOGIN
et voici le résultat
./generateLogin.sh saint-marc jean
./generateLogin.sh: line 20: 7: Aucun fichier ou répertoire de ce type
*************************
saint-marc jean
*************************
Login : saint-_j
ca marche aussi si le nom fait moin de (ou égale à) 6 caractères
mais il resulte toujours une erreur
Quelqu'un peut m'expliquer?
Je vous remercie pour votre aide
Hors ligne
#9 Le 22/08/2007, à 22:36
- abetsic
Re : [RESOLU] help script shell
Car ce n'est pas comme ça que l'on fait les tests d'inégalité.
de mémoire c'est [ $ta_var -lt 5 ]
man test pour plus d'infos.
Hors ligne
#10 Le 23/08/2007, à 19:43
- Sebome
Re : [RESOLU] help script shell
C'est bien ça je vous remercie tous pour votre aide:D
Hors ligne
#11 Le 25/08/2007, à 14:09
- YMulleneers
Re : [RESOLU] help script shell
Bonjour,
J'ai une idée à proposer
for i in $(seq 7)
do
echo $i
done
un petit détour par le manuel s'impose : prennez une console et tapez "man seq". Je suis débutant, je ne peux pas vous en dire plus...
Cordialement
Linux Mint 16
J'aime à utiliser Linux.
Hors ligne
#12 Le 26/08/2007, à 04:30
- kaworu
Re : [RESOLU] help script shell
Bonjour,
J'ai une idée à proposer
for i in $(seq 7) do echo $i done
un petit détour par le manuel s'impose : prennez une console et tapez "man seq". Je suis débutant, je ne peux pas vous en dire plus...
Cordialement
Salut !
ton idée est bien, mais si tu utilise $() cela ne marche qu'avec bash. Si ce n'est pas un problème, les versions "récentes" de bash supportent directement ce type d'itération :
for i in {1..10}; do
# Plus simple et direct que for i in $(seq 10)
echo -n "$i "
done
voir ici : http://abs.traduc.org/abs-4.2.01-fr/ch34s02.html
et biensûr, les boucles for "à la C" (grâce à l'expansion arithmétique de bash) :
for ((i=0; i < 10; i++)); do
echo $i
done
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
Pages : 1