Variable globale :
ARGUMENTS=$(echo "${@}")
Code :
Le but est que dès que je détecte un nombre dans l'un des arguments du script, je l'afficche dans le tableau
Donc on devrait avoirHell0 W0rld1
avec
Par exemple
./test.sh test Hell0 W0rld1
Je stocke les mots dans un tableau qui comportent au moins un nombre et les affiche
Or ma boucle FOR à un problème, elle ne loope pas correctement et me ressort le tableau des arguments : [ICI J'ai rajouté un echo $arg pour voir si ça loop bien mais non...]
Résultat :
test Hell0 W0rld1
Comment faire les kheys svp ?
Merci
######################################################################
# Variables globales
######################################################################
ARGUMENTS=$(echo "${@}")
######################################################################
# Vérifie si le mot est valide.
#
# Globals:
# ARGUMENTS
# Locals:
# checkNumbersArguments
# searchErrorNumber
# Arguments:
# None
# Return:
# 0 si le mot est bel et bien un mot et si ils ne contient pas
# des nombres, 1 si erreur.
######################################################################
function validityWords() {
local checkNumbersArguments=$(echo "${ARGUMENTS}" | grep '[0-9]')
if ! test "${checkNumbersArguments}"
then
return 0
else
errorNumber
return 1
fi
}
function errorNumber() {
local array=()
for arg in ${ARGUMENTS}
do
if test "${arg}" = *[0-9]*
then
array+=("${arg}")
fi
done
echo "${array[@]}"
}
Merci à tokpela
Le 27 janvier 2021 à 15:42:53 tokpela a écrit :
Le 27 janvier 2021 à 15:40:46 DesertStrength a écrit :
Le 27 janvier 2021 à 15:39:44 tokpela a écrit :
Le script de l'auteur :
######################################################################
# Vérifie si le mot est valide.
#
# Globals:
# ARGUMENTS
# Locals:
# checkNumbersArguments
# searchErrorNumber
# Arguments:
# None
# Return:
# 0 si le mot est bel et bien un mot et si ils ne contient pas
# des nombres, 1 si erreur.
######################################################################
function validityWords() {
local checkNumbersArguments=$(echo "${ARGUMENTS}" | grep '[0-9]')
if ! test "${checkNumbersArguments}"
then
return 0
else
errorNumber
return 1
fi
}
function errorNumber() {
local array=()
for arg in ${ARGUMENTS}
do
if test "${arg}" = *[0-9]*
then
array+=("${arg}")
fi
done
echo "${array[@]}"
}
Merci faut pas oublier la variable globale ARGUMENTS=$(echo "${@}")
Edité !
Et pas de problème
Merci beaucoup
Le 27 janvier 2021 à 15:41:16 mynameisflash a écrit :
C'est quoi cette syntaxe if test truc = regex ?
Bah j'utilise la command test pour voir si l'argument a un nombre ou pas
Le 27 janvier 2021 à 15:36:57 r10r1010101r0 a écrit :
Bon allez nique ta m_re
Sympa
Le 27 janvier 2021 à 15:36:26 r10r1010101r0 a écrit :
Mais copie le ici mdr, c'est un script de 4 lignes
Bah non il fait plus que 4 lignes
Le 27 janvier 2021 à 15:30:38 r10r1010101r0 a écrit :
c''est poas comme ça que tu mets tes arguments
Comment faut-il faire ?
Le 27 janvier 2021 à 15:30:58 [MaitreJohn] a écrit :
Mais go StackOverflow mec
J'ai déjà go StackOverflow et j'ai posé la question mais on m'a répondu pour un script donné
et pas dans le cas de fonctions
Le 27 janvier 2021 à 15:29:14 PatoBulaire a écrit :
Le 27 janvier 2021 à 15:25:49 DesertStrength a écrit :
Le 27 janvier 2021 à 15:23:55 PatoBulaire a écrit :
C'est normal tu a mis des " " dans ta boucle for
De mes souvenirs de bashCa change rien :
https://image.noelshack.com/fichiers/2021/04/3/1611757540-capture-d-ecran-du-2021-01-27-15-25-25.png Rien sur la sortie standard
C'est quoi le but de cette boucle j'ai du mal à comprendre
Ba
${ARGUMENTS} c'est l'ensemble des arguments : test Hello World
arg est censé prendre le premier argument : test
et ensuite tester si il a des nombres
Si oui on l'ajoute dans le tableau et on fait un echo du tableau
Et on refait pour le second argument etc.
Le 27 janvier 2021 à 15:27:38 PapyTrico_Pyj a écrit :
T'as déjà entendu parler de IFS ?
Je trouve que ta boucle for est bizarre
Euh oausi mais je sais pas comment l'utiliser
Ma boucle for : arg prend le premier argument et ensuite je teste, je prends le second argument etc. jusqu'a qu'il y ait plus d'argument disponibles ;
Le 27 janvier 2021 à 15:23:55 PatoBulaire a écrit :
C'est normal tu a mis des " " dans ta boucle for
De mes souvenirs de bash
Ca change rien :
Rien sur la sortie standard
Le 27 janvier 2021 à 15:20:12 CrazyBeau a écrit :
Mais lol
Merci du Up