Je veux changer de répertoire pour effectuer une tâche dans chaque répertoire. Voici le code:
for i in {1..10} do cd dir/subdir$i bla... bla.. bla.. done
Cependant je reçois une erreur:
not found [No such file or directory]
J’ai essayé ce qui suit mais j’obtiens toujours la même erreur ci-dessus:
cd $(echo dir/subdir"$i") cd $(eval dir/subdir"$i")
Le problème est probablement dû au fait que tous les répertoires que vous souhaitez modifier sont relatifs par rapport au répertoire de base d’origine. Une façon de résoudre ce problème consiste à utiliser un sous-shell (...)
:
for i in {1..10}; do ( cd dir/subdir$i || continue cmd1 cmd2 ) done
Une autre méthode consiste à retourner au répertoire précédent en utilisant cd "$OLDPWD"
:
for i in {1..10}; do cd dir/subdir$i || continue cmd1 cmd2 cd "$OLDPWD" done
Encore une autre façon d’utiliser pushd
et popd
:
for i in {1..10}; do pushd dir/subdir$i || continue cmd1 cmd2 popd done