Du bist nicht angemeldet.
Hi,
sorry falls das jetzt eine dumme frage ist, aber ich komme mit einem bash script nicht weiter. Um es grob zu erklären. Das script wird via
./script.sh blubb blubb3 blubb4 blubb5 blub6 ...
angesteuert. $1 steuert den teil des scripts an der aufgerufen werden soll. $2 gibt den Dateinamen an in den die while Schleife schreiben soll.
$3 bis zum vorletzten Argument soll so geschrieben werden:
echo "\"$3\", " >> $2
echo "\"$4\", " >> $2
echo "\"$5\", " >> $2
....
und der letzte Eintrag dann so:
echo "\"$letztesargument\"" >> $2
Danke im voraus für jegliche Hilfe!
Grüße und ein frohes neues.
Beitrag geändert von J4son (02.01.2020 12:00:37)
Online
Kannst du z.B. mit shift machen. shift frisst eins (oder mehr) Argumente und der Rest rückt auf.
#!/bin/bash
if [ $# -lt 3 ]
then
panic auf der titanic
fi
teil=$1
datei=$2
shift 2 # wirft $1, $2 weg und macht $3, $4, $5, ... zu $1, $2, $3, ...
while [ $# -gt 1 ] # solange es mehr als 1 argument gibt
do
echo "\"$1\", " >> "$datei"
shift # wirft $1 weg und macht $2 zu $1
done
echo "\"$1\"" >> "$datei"
Offline
Ach genial! "shift" kannte ich noch nicht. Das ist genau das was ich gesucht habe!
Vielen Dank frostschutz!
Online
Für Faule ohne shift:
for i in $*; do
echo $i >> $datei
done
$* ist ein Array aus allen Argumenten
EDIT: Interpreter ist die /bin/sh
Beitrag geändert von Foulanzer (02.01.2020 13:14:49)
Offline
Für Faule ohne shift:
for i in $*; do echo $i >> $datei done
$* ist ein Array aus allen Argumenten
EDIT: Interpreter ist die /bin/sh
Das kannte ich schon. Aber das wäre nicht die Lösung für mein Problem gewesen da die Schleife mit $3 beginnt und für das letzte Argument etwas anderes machen muss.
Online
in bash kannst du es auch mit "${@:3:$#-3}" ausdrücken aber das funktioniert in einer anderen Shell nicht unbedingt...
$ set 1 2 3 4 5 6 7 8 9
$ echo $#
9
$ echo "$@"
1 2 3 4 5 6 7 8 9
$ echo "${@:3:$#-3}"
3 4 5 6 7 8
ansonsten halt das gute alte Erbsenzählen in der for-Schleife
aber ich benutze ganz gerne shift für sowas. Besser noch in einer Subroutine die ihre eigene Argumentkette hat, damit man die des Hauptzweigs nicht verbeutelt...
Beitrag geändert von frostschutz (02.01.2020 18:45:26)
Offline