Zsh, verification de chaine

Fermé
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014 - Modifié par jipicy le 27/03/2014 à 13:41
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014 - 28 mars 2014 à 11:18
Bonjour,

voici ma méthode qui déconne (dans le même programme que mon précédent sujet)

#bad symbols to sites names
badSymbols=("\s" "\." "[A-Z]")

#
# Test if the website name contains a given symbol
# @variable: site_name
# @return: res (2 if the file doesn't exist)
# >> Tested 04/25/14
#
websiteName_test() {
res=0
for i in 'seq 0 $((${#badSymbols[*]}-1))'
do
var1=$(echo $1 | grep "${badSymbols[i]}")
if [ ! -z ${var1} ]; then
res=2
break
fi
done
return $res
}

----- > le problème est que les majuscules et les points sont repérés mais pas les espaces.
Quelqu'un aurait une piste?

Merci.
A voir également:

13 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 mars 2014 à 14:07
hello
mettre des " autour des variables
if [ ! -z "${var1}" ]; then
0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
Modifié par 'Lex le 27/03/2014 à 14:43
ça ne donne rien de plus

-----------

----> voici le contenu de mon fichier essai.sh
#bin/zsh
source ./Script.sh
websiteName_test $1
echo $res

----> et le résultat d'exécution en console:

MacBook-Pro-de-alexandre:Desktop alexandre$ ./essai.sh "site.1"
2
MacBook-Pro-de-alexandre:Desktop alexandre$ ./essai.sh "sIte1"
2
MacBook-Pro-de-alexandre:Desktop alexandre$ ./essai.sh "site 1"
0
MacBook-Pro-de-alexandre:Desktop alexandre$
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 mars 2014 à 14:54
essayer avec
badSymbols=("[:space:]" "\." "[A-Z]")
0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
27 mars 2014 à 14:57
Bien vu. merci.

Aurais tu une astuce pour trouver les espaces en début et fin de ligne? les regexp ne fonctionnent pas ( *[]^ et ^[]* )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 mars 2014 à 15:11
$ echo "aa  bb " | grep "[[:space:]]$"
aa bb
$ echo "aa bb" | grep "[[:space:]]$"
$ echo " aa bb" | grep "[[:space:]]$"
$ echo " aa bb" | grep "^[[:space:]]"
aa bb
0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
Modifié par 'Lex le 27/03/2014 à 15:27
non seulement ça ne marche pas,
mais [:space:] me donne 2 tout le temps.
oO :'-(

Merci de m'aider en tout cas.
T'aura ton pseudo au "générique" :)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 mars 2014 à 15:31
Salut,

Essaye avec
egrep
ou
grep -E
:

$ echo -e " blabla\nblibli\nblublu \n   bloblo\nbleble   " | egrep '^ | $'| cat -A
blabla$
blublu $
bloblo$
bleble $

0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
27 mars 2014 à 15:43
Marche pô non plus.
:-<
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 mars 2014 à 08:12
remontre le code
0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
Modifié par 'Lex le 28/03/2014 à 10:30
fichier script.sh -----------------

#bad symbols to sites names
badSymbols=("[:space:]" "\." "[A-Z]")

#
# Test if the website name contains a given symbol
# @variable: site_name
# @return: res (2 if the file doesn't exist)
# >> Tested 04/25/14
#
websiteName_test() {
res=0
for i in 'seq 0 $((${#badSymbols[*]}-1))'
do
var1=$(echo $1 | grep -E "${badSymbols[i]}")
if [ ! -z "${var1}" ]; then
res=2
break
fi
done
return $res
}

fichier essai.sh ---------------

#bin/zsh
source ./Script.sh
websiteName_test $1
echo $res

---------------------
lien:
https://www.wuala.com/AdeLaTullaye/Code/?key=goa9X24okDkG

avec [:essai:] il est toujours à 2 et avec \s, il est toujours à 0
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
28 mars 2014 à 10:55
Re-
J'ai l'impression que tu te compliques la vie ;-\

Le script
cat brol.zsh
:
#! /bin/zsh

#
# Test if the website name contains a given symbol
# @variable: site_name
# @return: res (2 if the file doesn't exist)
# >> Tested 04/25/14
#
websiteName_test() {
egrep -q '\s|\.|[A-Z]' <<<"$1"
if [ $? -eq 0 ]
then
return 2
else
return 0
fi
}

websiteName_test "$1"
echo $?

Les test :
$ ./foo.zsh "site1"
0

$ ./foo.zsh "site.1"
2

$ ./foo.zsh "sitE1"
2

$ ./foo.zsh "si te1"
2
0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
28 mars 2014 à 11:09
Parce que je voulais en faire un tableau pour faciliter la motif des symboles par des novices (ou quasi novices).
Mais j'en ai mais claque. je vais arrêter de me prendre la tête avec ça.
0
'Lex Messages postés 16 Date d'inscription samedi 22 mars 2014 Statut Membre Dernière intervention 3 avril 2014
Modifié par 'Lex le 28/03/2014 à 11:45
Y es. j'ai comprise ce qui déconnait:
c'est les guillemets sur la variable à l'entrée du test.

Merci.

Par contre les regexp pour les espace(s) en début et fin de lignes déconnent toujours
0