Zsh, verification de chaine

'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
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.

13 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    mettre des " autour des variables
    if [ ! -z "${var1}" ]; then
    0
  2. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    ç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
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essayer avec
    badSymbols=("[:space:]" "\." "[A-Z]")
    0
  4. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    $ 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
  7. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  8. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Essaye avec
    egrep
    ou
    grep -E
    :

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

    0
  9. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    Marche pô non plus.
    :-<
    0
  10. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    remontre le code
    0
  11. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  12. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  13. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  14. 'Lex Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
     
    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