Algumas notas:
-
Não analise
ls
. Supondo que você queira usar todos os diretórios na pasta atual, entãofor dir in */ # note the trailing slash
IMO "dir" é um nome melhor que "i".
-
se nem todo diretório é desejado, você pode soletrá-los
for dir in dir1 dir2 dir4 ...; do ...
ou use um padrão glob que corresponda aos diretórios desejados
for dir in dir[1-46-9] ...; do ...
ou use uma matriz para mantê-los e iterar sobre a matriz
dirs=(dirA dirB dirE dirG) for dir in "${dirs[@]}"; do ... # those quotes are required.
- Esse padrão é bom:
cd dir; do stuff ...; cd ..
. Você também pode criar um subshell para que os efeitos decd
desapareçam quando a subshell sair. - É possível que
cd
falhe.
Então, aqui está um pequeno take alternativo
for dir in */; do
( cd "$dir" && echo 2 | ./scriptname.sh )
done