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.
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"
Ach genial! "shift" kannte ich noch nicht. Das ist genau das was ich gesucht habe!

Vielen Dank frostschutz!
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
Foulanzer schriebFü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.
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...