J'ai un script bash install.sh
dans mon répertoire actuel et un répertoire apps
qui contient plusieurs répertoires. Je veux parcourir ces sous-répertoires dans le dossier de l'application et exécuter un script. Après avoir exécuté le script dans le premier dossier, il devrait revenir et entrer dans le prochain dossier. J'ai essayé cela mais je saute les uns après les autres. Je veux dire qu'il entre dans tous les dossiers impairs et non dans des dossiers pairs.
Code dans install.sh
for f in apps/*;
do
[ -d $f ] && cd "$f" && echo Entering into $f and installing packages
cd ..
done;
Utilisez le chemin complet de votre répertoire parent (dans mon cas, le répertoire apps
situé dans mon répertoire personnel) et supprimez une commande supplémentaire (cd ..
).
for f in ~/apps/*;
do
[ -d $f ] && cd "$f" && echo Entering into $f and installing packages
done;
Voir capture d'écran: avec la commande cd ..
et en utilisant apps/*
Voir capture d'écran: sans la commande cd ..
et en utilisant ~/apps/*
Vous pouvez utiliser find
avec exec
pour cette proposition. Votre install.sh
devrait être
#!/bin/bash
find ./apps -type d -exec echo Entering into {} and installing packages \;
remplace le texte après -exec
par votre commande
par exemple
#!/bin/bash
find ./apps -type d -exec touch {}/test.txt \;
Il parcourra app et tous ses sous-répertoires et créera un fichier text.txt