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

Frage zu shellskript

juhu

Member
Hallo,

es gibt eine möglichkeit, wo ich in einm Shell skript ein Kommando ausführen kann und auf diesen Output dann über $1 $2 usw. zugreifen kann.
Leider kann ich mich nicht an die Syntax erinnern.
Kann mir das schnell jemand sagen?

Gruß
 

TeXpert

Guru
Du kannst den Output ganz normal verwenden, entweder mit 'ner pipe

Code:
#!/bin/bash

# jetzt script ausführen und noch ein 2. mit dem output
script1 | script2

oder indem Du den Output in einer Variable sammelst und entsprechend weiter verarbeitest
Code:
#!/bin/bash
# mit backticks
OUTPUT=`script1`
# jetzt was mit OUTPUT machen
echo "$OUTPUT"
 
OP
J

juhu

Member
Nein, so habe ich das nicht gemeint. sondern.
Wein ein Kommando z. B. vier Worte zurück gibt, das ich mit $1-$4 die einzelnen Worte aufrufen kann.

Gruß
 

TeXpert

Guru
ah, jetzt ja, die Variablen $1...$n sind die Eingangsparameter des Scripts, die werden mittendrin nicht automagisch neu gesetzt,


sei a.sh ein entsprechendes Script,z.B.
Code:
#!/bin/bash

echo "eins" "zwei" "drei"

dann kann man z.B. mit einer for-Schleife
Code:
#!/bin/bash
for i in `./a.sh`
do
  echo "--> $i <--"
done
über alle ausgaben iterieren,

oder Du speicherst die Ausgaben in einem Array:
Code:
#!/bin/bash
a=(`./a.sh`)
echo "${a[0]}"
echo "${a[1]}"
echo "${a[2]}"
 

regexer

Advanced Hacker
Code:
#!/bin/bash
for i in `./a.sh`
do
  echo "--> $i <--"
done
Mir sei eine blöde Frage erlaubt: Warum einfach wenn's auch kompliziert geht? Folgendes Script tut's doch auch:
Code:
#!/bin/bash
set -- eins zwei drei       
# oder mit script:  
# set -- `./a.sh`

echo $1 $2 $3
 

TeXpert

Guru
klar, kannst Du die Eingabeparameter manuell überschreiben, aber das geht 1. nicht automagisch und 2. will man das ja auch nicht immer... (ich z.B: wollte das noch nie...)

Der Vorteil einer entsprechenden Trennung ist, dass immer im Kontext klar ist, was jetzt gerade abgearbeitet wird.
 

regexer

Advanced Hacker
TeXpert schrieb:
1. nicht automagisch
Das war ja auch nicht die Frage :wink:
2. will man das ja auch nicht immer... (ich z.B: wollte das noch nie...)
Der Vorteil einer entsprechenden Trennung ist, dass immer im Kontext klar ist, was jetzt gerade abgearbeitet wird.
Gut, das ist eine philosophische Frage. Was ist "schön scriptiert" und was nicht ... Aber prinzipiell ist es möglich $1-$n zu mit der Ausgabe eines Scipts zu füllen.
 
Oben