schreibt habe ich ein Skript, das wie etwas ist:Skript, das mehrere Skripte in Bash
for k in {1..100..1}
do
cat <<EOF> script${k}.sh
do some things
cat <<EOF> somefile
text
EOF
do some things
EOF
done
Also, kurz gesagt, ich will 100-Skripte, die wie folgt aussieht:
do some things
cat <<EOF> somefile
text
EOF
do some things
Das Problem ist, dass Wenn ich das ausführe, verbindet Bash das erste EOF mit dem dritten und hört auf zu schreiben, und es beginnt, die nächsten Befehle auszuführen.
Wie kann ich das beheben?
Vielen Dank im Voraus!
EDIT: Ich korrigiert Tippfehler unten von Aaron hingewiesen. Außerdem werde ich ein bisschen meine ursprüngliche Frage erweitern. Nach Aarons Angabe benutzte ich END für den ersten und letzten EOF. Es funktioniert gut, aber ich habe immer noch Probleme. Als spezifischere, sieht mein Code dies wie:
for k in {1..100..1}
do
cat <<END> script${k}.sh
mkdir folder${k}
cd folder${k}
cat <<EOF> somefile
text
EOF
for j in {1..80..1}
cat <<EOF> program${j}
text
EOF
einige Sachen ausführen
END
done
Ich denke, man sich die Mühe zu sehen. Jetzt funktioniert der Code fast gut. Das Problem liegt bei den Variablen. Die $ {k}, die zwischen den ENDs liegen, werden in der script${k}
nicht korrigiert durch die entsprechende Zahl ersetzt!
Vielen Dank für all die Hilfe :-)
Sie können EOF nicht einrücken, es wird nicht erkannt. – choroba
Danke. Ich habe es nicht eingezogen. Ich habe es gerade so hier in der Post geschrieben, damit Sie es deutlicher lesen können – Qwertuy