Besoin d'aide script bash
Confusionman
-
Confusionman -
Confusionman -
Bonjour, j'ai un problème avec mon script :/
je déclare un array comme ceci :
declare -a start=('str1' 'vbr1' 'tri')
Et un peu plus loin il y a un read -r input, je voudrais savoir comment faire pour vérifier que ce qui a été saisi par l'utilisateur dans $input est contenu dans l'array start.
Cette condition marche bien : if [[ " ${start[@]} " =~ " ${input} " ]]; then
mais seulement si ce que l'utilisateur entre est identique à un des termes de l'array, or j'aimerais pouvoir ecrire "str1 rep" ou encore "tri mr" et qu'il considère quand même qu'une partie de $input se trouve dans l'array start...
je sais pas si j'ai été clair, excusez moi si jamais :)
Merci d'avance !
je déclare un array comme ceci :
declare -a start=('str1' 'vbr1' 'tri')
Et un peu plus loin il y a un read -r input, je voudrais savoir comment faire pour vérifier que ce qui a été saisi par l'utilisateur dans $input est contenu dans l'array start.
Cette condition marche bien : if [[ " ${start[@]} " =~ " ${input} " ]]; then
mais seulement si ce que l'utilisateur entre est identique à un des termes de l'array, or j'aimerais pouvoir ecrire "str1 rep" ou encore "tri mr" et qu'il considère quand même qu'une partie de $input se trouve dans l'array start...
je sais pas si j'ai été clair, excusez moi si jamais :)
Merci d'avance !
A voir également:
- Besoin d'aide script bash
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
6 réponses
Tu peux extraire le premier mot en t'inspira de ceci:
L'avantage de cette méthode est d'utiliser les commandes internes de bash et de ne lancer aucun processus externe
johand@bata:~$ aString="abc def ghi" johand@bata:~$ echo ${aString%% *} abc
L'avantage de cette méthode est d'utiliser les commandes internes de bash et de ne lancer aucun processus externe
Salut,
$ cat foo.sh
#! /bin/bash
declare -a start=('str1' 'vbr1' 'tri')
PREG="${start[@]}"
REG="${PREG// /|}"
while :
do
read -rp "Entrez un nom : " input
if [[ ${input} =~ ${REG} ]]
then
echo "Entrée existante"
else
echo "L'entrée n'existe pas"
fi
done
$ ./foo.sh
Entrez un nom : str1
Entrée existante
Entrez un nom : str1 abc
Entrée existante
Entrez un nom : abc
L'entrée n'existe pas
Entrez un nom : abc vbr1
Entrée existante
Entrez un nom : triton
Entrée existante
Merci je vais essayer ça de suite !
Jisiv merci, le problème c'est que parfois l'entrée peut venir en second mot ou même en troisième, l'ordre est aléatoire :/
Je reviens pour dire si ça marche !
Jisiv merci, le problème c'est que parfois l'entrée peut venir en second mot ou même en troisième, l'ordre est aléatoire :/
Je reviens pour dire si ça marche !
Super ça marche impec !
Merci zipe
Je vais devoir faire ça sur beacoup d'array, j'essaye d'en faire une fonction mais ça ne marche pas.
function check_array() {
pv_$1="${"$1"[@]}"
v_$1="${pv_$1// /|}"
}
check_array start
${"$1"[@]} : mauvaise substitution.
Tu saurais pas comment faire ? :)
Merci zipe
Je vais devoir faire ça sur beacoup d'array, j'essaye d'en faire une fonction mais ça ne marche pas.
function check_array() {
pv_$1="${"$1"[@]}"
v_$1="${pv_$1// /|}"
}
check_array start
${"$1"[@]} : mauvaise substitution.
Tu saurais pas comment faire ? :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question