Tente colocar seu nome de variável entre chaves como este:
for i in {10..99} ; do echo wget "www.example.com/v${i}/file.txt" ; done
Pergunta mal interpretada. seq ou set -B é o caminho a percorrer ...
Estou tentando baixar vários arquivos, como:
www.example.com/v1/file.txt
www.example.com/v2/file.txt
www.example.com/v3/file.txt
...
O seguinte comando não funciona, pois ele realmente procura por um arquivo "r {1..99} /file.txt":
for i in {10..99}
do
wget "www.example.com/v"$i"/file.txt" -O "file_"$i".txt"
done
Também não faz diferença se eu colocar cotações adicionais "" por volta de $ i. O que estou fazendo errado?
Meu palpite é que você está usando uma versão mais antiga do bash ou sh
que não suporta expansão de chaves. Tente isso:
for i in $(seq 10 99);
do
wget www.example.com/v"$i"/file.txt -O file_"$i".txt
done
Outra possibilidade é que você desativou a expansão de chaves, pode ativá-las com set -B
e desativar com set +B
:
$ set +B
$ echo {1..10}
{1..10}
$ set -B
$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
Talvez você possa tentar com o comando seq :
for i in $(seq 10 99)
do
wget "www.example.com/v"$i"/file.txt" -O "file_"$i".txt"
done
Isso funciona para mim usando 3.2.51 (1) -release (a última versão estável é 4.2) :
$ bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
Ou talvez você esteja usando outro shell:
$ echo $SHELL
/bin/bash
Tags bash