Seu código do shell tem dois problemas:
- O
echonão deveria estar lá.
- A variável
$iestá digitada incorretamente como $1no nome do arquivo de destino.
Para fazer uma cópia de um arquivo no mesmo diretório que o próprio arquivo, use
cp thefile thecopy
Se você inserir mais alguma coisa, por exemplo,
cp thefile theotherthing thecopy
assume-se que você deseja copiar thefilee theotherthingpara o diretório chamado thecopy.
No seu caso, ele procura especificamente um arquivo chamado test.ogge um nomeado echopara copiar para o diretório test$1.ogg.
O $1mais provável será expandir para uma sequência vazia. É por isso que, quando você exclui o echocomando, você obtém "test.ogg e test.ogg são os mesmos arquivos"; o comando que está sendo executado é essencialmente
cp test.ogg test.ogg
Provavelmente é um erro de digitação.
No final, você quer algo como isto:
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
Ou, como alternativa
i=0
while (( i++ < 100 )); do
cp test.ogg "test$i.ogg"
done
Ou, usando tee:
tee test{1..100}.ogg <test.ogg >/dev/null
Nota: Isso provavelmente funcionaria para 100 cópias, mas para milhares de cópias pode gerar um erro "lista de argumentos muito longa". Nesse caso, volte a usar um loop.
echoque não deveria estar lá e o$1que deveria estar$i?