Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Frage zu shellskript

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
juhu
Member
Member
Beiträge: 110
Registriert: 27. Jul 2004, 23:22

Frage zu shellskript

Beitrag von juhu »

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ß
andreasw
Member
Member
Beiträge: 76
Registriert: 12. Dez 2004, 23:29

Beitrag von andreasw »

z. B. so

Code: Alles auswählen

a = `ls`
echo $a
mfg

Andy
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

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

Code: Alles auswählen

#!/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: Alles auswählen

#!/bin/bash
# mit backticks
OUTPUT=`script1`
# jetzt was mit OUTPUT machen
echo "$OUTPUT"
juhu
Member
Member
Beiträge: 110
Registriert: 27. Jul 2004, 23:22

Beitrag von juhu »

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ß
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

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: Alles auswählen

#!/bin/bash

echo "eins" "zwei" "drei"
dann kann man z.B. mit einer for-Schleife

Code: Alles auswählen

#!/bin/bash
for i in `./a.sh`
do
  echo "--> $i <--"
done
über alle ausgaben iterieren,

oder Du speicherst die Ausgaben in einem Array:

Code: Alles auswählen

#!/bin/bash
a=(`./a.sh`)
echo "${a[0]}"
echo "${a[1]}"
echo "${a[2]}"
juhu
Member
Member
Beiträge: 110
Registriert: 27. Jul 2004, 23:22

Beitrag von juhu »

Danke
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

Code: Alles auswählen

#!/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: Alles auswählen

#!/bin/bash
set -- eins zwei drei       
# oder mit script:  
# set -- `./a.sh`

echo $1 $2 $3
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

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.
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

TeXpert hat geschrieben: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.
Antworten