.sh Shell Script Loopen?

Pixelcoffee

Mitglied
Thread Starter
Mitglied seit
16.03.2019
Beiträge
19
Hallo!
Ich sitze momentan an einer .sh Shell Datei.
Ich bin fast fertig, nur würde ich sie gerne loopen, und zwar so, dass man als User im Terminal wenn man die Bash Datei öffnet, selbst eingeben und definieren kann, wie oft dieser Zyklus stattfindet. Mein Code sieht aktuell wie folgt aus:

Bash:
#!/bin/sh

read -p "Grösse der zu kopierenden Datei:" a

read -p "Anzahl der Write-Delete Zyklen:" b

mkfile -n "$a"m /Users/pixelcoffee/Documents/Test.txt

cp -R /Users/pixelcoffee/Documents/Test.txt /Users/pixelcoffee/Documents/

rm /Users/pixelcoffee/Documents/Test.txt
Wie kann ich hierbei definieren, dass die Zeilen 9-11 geloopt werden, und zwar nach der Anzahl der vom User im Terminal definierten Variable b?

Danke für eure Unterstützung!
 

oneOeight

Mitglied
Mitglied seit
23.11.2004
Beiträge
54.198
einfache for schleife
for i in {1..b}
do
done

das kann man aber doch leicht selbst recherchieren.
 

oneOeight

Mitglied
Mitglied seit
23.11.2004
Beiträge
54.198
die read vor der schleife, der rest zwischen do und done.
allerdings solltest du das mit den existierenden dateien behandeln und entweder automatisch überschreiben oder du musst halt jedes mal das überschreiben bestätigen.
 

oneOeight

Mitglied
Mitglied seit
23.11.2004
Beiträge
54.198
hmm, probier mal {1..$b}.
ist ja eine varibale.
 

xentric

Mitglied
Mitglied seit
11.05.2007
Beiträge
4.104
Es funktioniert nicht...
Entweder z.B.
Code:
for i in $(seq 1 $b)
do
    mkfile -n "$a"m /Users/pixelcoffee/Documents/Test.txt
    cp -R /Users/pixelcoffee/Documents/Test.txt /Users/pixelcoffee/Documents/
done
oder z.B.
Code:
for ((i=1;i<=b;i++))
do
    mkfile -n "$a"m /Users/pixelcoffee/Documents/Test.txt
    cp -R /Users/pixelcoffee/Documents/Test.txt /Users/pixelcoffee/Documents/

done
for i in {1..$b} geht nicht.
 
  • Gefällt mir
Reaktionen: Pixelcoffee

Pixelcoffee

Mitglied
Thread Starter
Mitglied seit
16.03.2019
Beiträge
19
for ((i=1;i<=b;i++))
do
mkfile -n "$a"m /Users/pixelcoffee/Documents/Test.txt
cp -R /Users/pixelcoffee/Documents/Test.txt /Users/pixelcoffee/Documents/

done
[/CODE]
Das hat funktioniert! Danke!

Und wie kann ich den Prozess des Kopierens und Löschens der Datei im Terminal sichtbar machen? Sodass der User ein "Feedback" bekommt, mit nem Counter z.B.
"Zyklus 1 von 5" oder so z.B.
 

oneOeight

Mitglied
Mitglied seit
23.11.2004
Beiträge
54.198
musst du halt ein entsprechendes echo in die schleife einbauen.
 

Pixelcoffee

Mitglied
Thread Starter
Mitglied seit
16.03.2019
Beiträge
19
Also z.B.

Code:
for ((i=1;i<=b;i++))
do

echo Zyklus $i von $b

mkfile -n "$a"m /Users/pixelcoffee/Documents/Test.txt
cp -R /Users/pixelcoffee/Documents/Test.txt /Users/pixelcoffee/Documents/

done
?
 

oneOeight

Mitglied
Mitglied seit
23.11.2004
Beiträge
54.198
fast, musst nur das was vom echo geschrieben werden soll in " " setzen.
eventuell noch ein \n für newline dazu.
 

electricdawn

Mitglied
Mitglied seit
01.12.2004
Beiträge
10.354
Ich hab ja schon mal geschrieben, dass etwas Grundlagen dem TE vielleicht doch ganz gut tun würden, und es nicht umbedingt auf die Hauruckmethode zu erzwingen und dabei nur ein Viertel zu verstehen.

Ist nur meine Meinung.
 
  • Gefällt mir
Reaktionen: dg2rbf und warnochfrei

warnochfrei

Mitglied
Mitglied seit
02.03.2019
Beiträge
1.000
Immerhin wird mal einigermaßen klar dargestellt, mit welcher Shell das Ganze funktionieren soll. Ist ja auch nicht selbstverständlich.
 
  • Gefällt mir
Reaktionen: dg2rbf

xentric

Mitglied
Mitglied seit
11.05.2007
Beiträge
4.104
<useless knowledge>
Bash:
for i in $(eval echo "{1..${b}}");
</useless knowledge>
Jaaa, ich hätte sagen sollen warum es nicht geht: Die Braceexpansion wird ausgeführt bevor die Variablen expandiert werden, deshalb geht es SO wie da oben nicht ;-). Das es mit eval geht war mir klar. Aber danke Dir trotzdem :). So einige Sachen hier im Forum waren mir ja durchaus schonmal neu, ..
Ich fands nur etwas traurig in dem Moment das der OP immer noch nicht weiter war als hier (https://www.macuser.de/threads/shell-fragen.851309/), und was soll ich Ihn dann mit solchen Details nerven. BASH/Shell ist da evlt. auch nicht das tollste zum Einstieg mit seinen ganzen Eigenheiten, und man kann nichtmals Gescheid "rechnen" ohne bc. Ich bin nicht sooo der Fan von Shell. Ich tendiere mittlerweile "Skript"-Sachen eher in Go oder Python zu machen sobald sie etwas anspruchsvoller sind. Hier jetzt natürlich nicht,... aber du weißt schon wie ich das meine ;)

Aber andererseits weiß ich auch als ich angefangen hab zu programmieren. Da habe ich auch schonmal Tage gebraucht um einige Konzepte zu verstehen und effektiv dann nur wenige Zeilen Code am Tag geschafft, die schließlich nichtmal richtig waren, ..
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: warnochfrei
Oben