Il codice della shell presenta due problemi:
- Non
echodovrebbe essere lì.
- La variabile
$iè errata come $1nel nome del file di destinazione.
Per creare una copia di un file nella stessa directory del file stesso, utilizzare
cp thefile thecopy
Se si inserisce qualcos'altro, ad es
cp thefile theotherthing thecopy
quindi si presume che si desidera copiare thefilee theotherthingnella directory chiamata thecopy.
Nel tuo caso, sembra specificamente per un file chiamato test.ogge uno di nome echoper copiare nella directory test$1.ogg.
Il $1molto probabilmente espanderà a una stringa vuota. Questo è il motivo per cui, quando si elimina echodal comando, si ottiene "test.ogg e test.ogg sono gli stessi file"; il comando in esecuzione è essenzialmente
cp test.ogg test.ogg
Questo è probabilmente un errore di battitura.
Alla fine, vuoi qualcosa del genere:
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
Oppure, in alternativa
i=0
while (( i++ < 100 )); do
cp test.ogg "test$i.ogg"
done
Oppure, usando tee:
tee test{1..100}.ogg <test.ogg >/dev/null
Nota: molto probabilmente funzionerebbe per 100 copie, ma per migliaia di copie potrebbe generare un errore "Elenco argomenti troppo lungo". In tal caso, ripristina l'utilizzo di un loop.
echonon è quale non dovrebbe esserci e$1quale dovrebbe essere$i?