Ihr Shell-Code weist zwei Probleme auf:
- Der
echo
sollte nicht da sein.
- Die Variable
$i
ist wie $1
im Zieldateinamen falsch geschrieben .
Um eine Kopie einer Datei im selben Verzeichnis wie die Datei selbst zu erstellen, verwenden Sie
cp thefile thecopy
Wenn Sie dort noch etwas einfügen, z
cp thefile theotherthing thecopy
dann wird angenommen, dass Sie kopieren thefile
und theotherthing
in das Verzeichnis namens möchten thecopy
.
In Ihrem Fall sucht es speziell nach einer Datei mit dem Namen test.ogg
und einer mit dem Namen echo
, die in das Verzeichnis kopiert werden soll test$1.ogg
.
Das $1
wird höchstwahrscheinlich zu einer leeren Zeichenfolge erweitert. Aus diesem Grund erhalten Sie beim Löschen des echo
Befehls "test.ogg und test.ogg sind die gleichen Dateien". Der auszuführende Befehl ist im Wesentlichen
cp test.ogg test.ogg
Dies ist wahrscheinlich ein Tippfehler.
Am Ende möchten Sie so etwas wie Folgendes:
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
Oder als Alternative
i=0
while (( i++ < 100 )); do
cp test.ogg "test$i.ogg"
done
Oder mit tee
:
tee test{1..100}.ogg <test.ogg >/dev/null
Hinweis: Dies würde höchstwahrscheinlich für 100 Kopien funktionieren, aber bei Tausenden von Kopien kann der Fehler "Argumentliste zu lang" auftreten. Verwenden Sie in diesem Fall wieder eine Schleife.
echo
der nicht da sein sollte, und der,$1
der sein sollte$i
?