2017-01-11 4 views
0

Nach dem Erstellen eines Unity-Standalone-Builds möchte ich einige Kopien sowohl der ausführbaren Datei als auch des Datenordners erstellen, sodass ich mehrere Instanzen davon ausführen kann. Gehen Sie einfach das, habe ich dieses Skript aus:Warum funktioniert mein Cygwin oder mkdir mit einer Variablen im Verzeichnisnamen nicht?

for i in 1 2 3 4 
    do cp SomeProject.exe SomeProject$i.exe 
    cp -r SomeProject_Data/ SomeProject$i_Data 
    echo i=$i done 
done 

Während jedoch das Kopieren der ausführbaren Datei arbeitet, diesen Ordner kopieren nicht. Anstatt den Datafolder nach SomeProject1_Data10, SomeProject2_Data usw. zu kopieren, kopiert er den ersten in SomeProject und den nächsten darin (und der folgende überschreibt anscheinend nur den zweiten).

Ich habe versucht, ein mkdir SomeProject$i_Data und Kopieren „in“, dass das Einfügen, aber das schafft auch nur SomeProject in der ersten Iteration und folgende Iterationen beklagen, dass SomeProject ist bereits vorhanden.

Irgendeine Idee was ist los/falsch?

Antwort

1

Ich denke, ich habe es gerade selbst ausgearbeitet. Ich brauche {} um das i in der Variablen. In meinem Code $i_Data wird als der Name der Variablen, die zu nichts/leere Zeichenfolge aufgelöst wird. Durch Hinzufügen von {} um die i wird es korrekt aufgelöst. Also, Arbeitscode ist:

for i in 1 2 3 4 
    do cp SomeProject.exe SomeProject$i.exe 
    cp -r SomeProject_Data/ SomeProject${i}_Data 
    echo i=$i done 
done 
+0

oder Doppel-Zitat wie in meiner Antwort. – Inian

+1

Nein, doppelte Anführungszeichen funktionieren nicht. Das Problem ist, dass "i_Data" als Variablenname angezeigt wird und nicht nur "i", also brauche ich {}. Will eine richtige Antwort schreiben :) –

+0

Fast in Erwägung, wenn ich die ganze Frage löschen sollte ... ist es nützlich für jeden anderen, denken Sie? :) –