Sim, alterar o diretório de trabalho é complicado e não exatamente o que você gostaria de fazer, pois pode levar a situações extremamente estranhas em scripts mais complexos, a menos que você seja cuidadoso.
O método usual para alterar o diretório de trabalho de um comando simples é colocar o cd
e a invocação do comando em um sub-shell. O diretório de trabalho será alterado para o sub-shell, mas a mudança não será transferida para o restante do script, pois o sub-shell está sendo executado em seu próprio ambiente.
Exemplo: Executando mycommand
dentro de todos os diretórios no diretório de trabalho atual:
for d in *; do
if [ -d "$d" ]; then # or: if test -d "$d"; then
( cd "$d" && mycommand )
fi
done
ou no seu caso, com diretórios conhecidos a
e b
:
for d in a b; do
( cd "$d" && dsmmigrate * & )
done
Não conheço a ferramenta dsmmigrate
, por isso não posso dizer se a execução desta maneira é correta ou não.
EDITAR: Acontece que o dsmmigrate
tool tem um sinalizador -Recursive
:
$ dsmmigrate -Recursive /path