• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Bash Script um Übergabeparameter anzureihen

Tach auch,

ich versuche gerade die Bash Script zu bauen was die Übergabeparater $5 bis $xx in einer Variable anreiht also so:

script.sh 1 2 3 4 5 6 7 8 9 usw

ausgabe = 5 6 7 8 9 usw

Wie bekomme ich das hin das in einer Schleife immer wieder eineer Variable ein Text hinzugefügt wird?

Ich hab mir das so in der art vorgestellt:

PARAM=$#

for (( I=1; $I <= $PARAM; I++ ))
do
var=$1 nur das hier der text immer angereiht wird...
shift
done


Ich hoffe jemand versteht was ich vorhabe und kann mir helfen.


MfG

Athlon
 
A

Anonymous

Gast
Ganz vereinfacht so hier.
Code:
ausgabe=`echo $* | cut -d " " -f 5- `
echo $ausgabe
das funktioniert so lange einwandfrei wie keine gequotete "zusammengesetzen Parameter" als die ersten 5 vorkommen.
siehe auch man bash und suchen nach "Special Parameters" (bei mir das 2 Vorkommen dieses Suchmusters)

robi
 
Tach,


wenn ich das so richtig verstehe werde der vordere Teil angeschnitten bis 5 oder?

Aber was passiert wenn die ersten 5 andres aussehen z.B.:

test.sh wie geht das denn oder so

Die Parameter die übergeben werden sehen immer anders aus....

Ich will das so machen weil ich über php shell_exec anscheinend keine "zusammengesetzen Parameter" übergeben kann.

MfG


Athlon
 
A

Anonymous

Gast
Athlon schrieb:
wenn ich das so richtig verstehe werde der vordere Teil angeschnitten bis 5 oder?
Aber was passiert wenn die ersten 5 andres aussehen z.B.:
test.sh wie geht das denn oder so
probiers doch einfach aus, bei $* werden die einzelnen Argumente mit einem Leerzeichen getrennt ausgegeben, (also zB 4 Leerzeilen zwischen dem 3 und 4 Argument wird auf ein Leerzeichen reduziert.
Code:
cut -d " " -f 5-
Bedeutet : von Feld Nr.5 bis (Unendlich) mit dem Feldbegrenzer " " (also Leerzeichen) ; alles andere wegschneiden

robi
 
oder:
Code:
prompt> set "1 1" 2 3 "4 4 4" 5 "6 6" 7
prompt> shift 4
prompt> echo $*
5 6 6 7
Dann stellt sich das Problem mit den Leerzeichen nicht. Eventuell $1-$4 vorher zwischenspeichern...
 
A

Anonymous

Gast
jengelh schrieb:
Wegen Leerzeichen... "$*" bzw. "$@".

das ist aber vollkommen wurscht ob jetzt jede Argument einzeln oder alle auf einmal in "" gesetzt sind, wenn ich wie oben gezeigt das Ergebnis hinterher mit cut -d" " -f bearbeite kommt auch nur Murx raus, deshalb habe ich ja gleich die Einschränkung am Anfang genannt.

robi
 
Oben