Il codice della shell presenta due problemi:
- Non
echo
dovrebbe essere lì.
- La variabile
$i
è errata come $1
nel 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 thefile
e theotherthing
nella directory chiamata thecopy
.
Nel tuo caso, sembra specificamente per un file chiamato test.ogg
e uno di nome echo
per copiare nella directory test$1.ogg
.
Il $1
molto probabilmente espanderà a una stringa vuota. Questo è il motivo per cui, quando si elimina echo
dal 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.
echo
non è quale non dovrebbe esserci e$1
quale dovrebbe essere$i
?