Incrémenter nombre de variables
sym59
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
sym59 Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
sym59 Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Savez-vous s'il est possible d'incrémenter le nombre de variables d'un bash?
Ca pourrait par exemple m'éviter de définir une centaine de variables qui se ressemblent beaucoup...
Voici une petite illustration (qui bien sure ne marche pas...)
Je commence à nager dans mon code et c'est pour l'instant la solution la plus simple qui pourrait éventuellement m'aider, donc si quelqu'un sait comment m'aider... Ce serait cool =)
Merci !
Savez-vous s'il est possible d'incrémenter le nombre de variables d'un bash?
Ca pourrait par exemple m'éviter de définir une centaine de variables qui se ressemblent beaucoup...
Voici une petite illustration (qui bien sure ne marche pas...)
#methode bete et mechante :
adr_racine=$(echo "C:/Users/Desktop")
adr_1=$(echo "$adr_racine/$folder1")
adr_2=$(echo "$adr_1/$folder2")
adr_3=$(echo "$adr_2/$folder3")
...
#methode n°2
declare -i theEnd
declare -i n
declare -i m
theEnd=100
for n in theEnd
do
m=$(($n + 1))
adr_$m=$(echo "$adr_$n/$folder$m")
done
Je commence à nager dans mon code et c'est pour l'instant la solution la plus simple qui pourrait éventuellement m'aider, donc si quelqu'un sait comment m'aider... Ce serait cool =)
Merci !
A voir également:
- Incrémenter nombre de variables
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Ascii nombre de caractères - Guide
- Nombre de page - Guide
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
3 réponses
J'imagine qu'il y a une méthode plus simple mais je ne vois vraiment pas...
Je cherche en faite à comparer deux répertoires. Pour celà, je souhaite naviguer dans chaque dossier et sous-dossier de ces deux répertoires et, dans chacun de ces dossiers, comparer les fichiers...
Pour créer les variables correspondantes aux répertoires, j'ai pensé à une fonction :
Mais elle se limite à 4 niveaux de sous-arborescence dans ce cas précis (9 dans la version longue) ...
Et c'est après que çà se gatte : 9 boucles imbriquées comme des poupées russes et des dizaines de commandes que je répète dans chaque boucle (qui pour moi, pourraient être évitée)
Je cherche en faite à comparer deux répertoires. Pour celà, je souhaite naviguer dans chaque dossier et sous-dossier de ces deux répertoires et, dans chacun de ces dossiers, comparer les fichiers...
Pour créer les variables correspondantes aux répertoires, j'ai pensé à une fonction :
function mon_adresse()
{
if [ -n $dossier1 ]; then
adr_1=$(echo "$adr_racine/$1") #ce sera le 1er dossier à comparer
if [ -n $dossier2 ]; then
#adr_2 = sous-dossier niveau 1
adr_2=$(echo "$adr_1/$dossier2")
if [ -n $dossier3 ]; then
#adr_3 = sous-dossier niveau 2
adr_3=$(echo "$adr_2/$dossier3")
if [ -n $dossier4 ]; then
adr_4=$(echo "$adr_3/$dossier4")
#adr_4 = sous-dossier niveau 3
fi
fi
fi
fi
}
Mais elle se limite à 4 niveaux de sous-arborescence dans ce cas précis (9 dans la version longue) ...
Et c'est après que çà se gatte : 9 boucles imbriquées comme des poupées russes et des dizaines de commandes que je répète dans chaque boucle (qui pour moi, pourraient être évitée)
salut,
diff peut comparer le contenu de deux répertoires.
mais s'il s'agit de comparer le contenu des fichiers
si la hiérarchie de sous-répertoires est identique (les sous-répertoires portent le même nom) sous les deux répertoires principaux, tu peux faire une boucle for sur l'un d'eux en activant l'option globstar, et en utilisant **, et de comparer les fichiers avec diff (aussi)
diff peut comparer le contenu de deux répertoires.
mais s'il s'agit de comparer le contenu des fichiers
si la hiérarchie de sous-répertoires est identique (les sous-répertoires portent le même nom) sous les deux répertoires principaux, tu peux faire une boucle for sur l'un d'eux en activant l'option globstar, et en utilisant **, et de comparer les fichiers avec diff (aussi)
salut Q*,
perso je préfère utiliser comm que diff pour les fichiers ; çà m'évite de devoir enlever les "<" et les ">" quand je veux réutiliser le résultat...
J'ai déjà une première version du fichier mais assez limitée :
elle permet de comparer les fichiers des deux répertoires "parents", les sous-dossiers et leurs fichiers.
Donc, si ces sous dossiers comportent à leur tour des dossiers, leur contenu ne peut pas être comparé... (C'est comme si le film inception était limité au rêve dans la camionnette =p)
Sinon tu peux m'aiguiller un peu plus sur le globstar et ** ? ce sont des options pour for ou pour diff?
Je ne peux pas compter sur man :
je te remercie
perso je préfère utiliser comm que diff pour les fichiers ; çà m'évite de devoir enlever les "<" et les ">" quand je veux réutiliser le résultat...
J'ai déjà une première version du fichier mais assez limitée :
elle permet de comparer les fichiers des deux répertoires "parents", les sous-dossiers et leurs fichiers.
Donc, si ces sous dossiers comportent à leur tour des dossiers, leur contenu ne peut pas être comparé... (C'est comme si le film inception était limité au rêve dans la camionnette =p)
Sinon tu peux m'aiguiller un peu plus sur le globstar et ** ? ce sont des options pour for ou pour diff?
Je ne peux pas compter sur man :
man diff --> No manual entry for "diff"
help diff --> No information on "diff"
je te remercie
globstar est une option de shopt (de bash), qui, si elle est activée, permet de descendre dans tous les sous-répertories.
ceci affichera les fichiers qui sont au même endroit sous les deux répertoires.
ceci affichera les fichiers qui sont au même endroit sous les deux répertoires.
#!/bin/bash
racine=/chemin/vers
dossier1="dossier1"
dossier2="dossier2"
cherche="$racine/$dossier1"
shopt -s nullglob globstar
for f in "$cherche/"**/*
do
test -f "$f" && test -f "${f/"$dossier1"/$dossier2}" && echo "${f#$cherche/*} est dans les deux répertoires"
done