PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell-Prog. for Schleife - nur wie ?



alphazero
21.09.06, 09:11
Moin moin,

da ich im moment nicht ganz klar komme mit der Syntax in Shell-Programmierung,
bitte ich euch mir mal ein beispiel für ANfänger zu geben.

für shell würde ich sowas brauchen, also eine schleife die bei einem Wert x startet und solange läuft
bis der MaxWert erreicht ist. der Wert x addiert sich natürlich bei jedem durchlauf um 1 bzw erhöht sich

c++ beispiel:

for(int zähler=0; zähler <= meinMaxWert; zähler++)

hier stehen meine Befehle in der Schleife

bitte helft mir aber erklärt es ganz einfach, da ich totale probleme mit der syntax habe! BESTEN DANK

HEMIcuda
21.09.06, 09:49
for I in $(seq <startwert> <endwert>);do blablubb $I;done

'cuda

buzz768
21.09.06, 10:38
Oder so:


for ((i=1;$i<=3;i++)) ; do
echo $i
done

alphazero
21.09.06, 11:41
Wenn ich eine Zeile mit mehreren Wörtern in einer Variable abspeicher, wie kann ich diese variable bzw die zeile durchsuchen ob entwas enthalten ist?


besser vielleicht noch abfragen ?

also sagen wir die variable ist aktzeile

if [ "$aktzeile" ....... ] ; then
.....

alphazero
21.09.06, 12:12
Kann mir keiner helfen ?

HEMIcuda
21.09.06, 12:43
Kann mir keiner helfen ?

Vielleicht solltest Du Dich ein bisschen in Geduld ueben und nicht schon nach einer halben Stunde rumrennen wie ein aufgescheuchtes Huhn. Es soll Leute geben, hab ich gehoert, die noch was anderes zu tun haben, als den ganzen Tag darauf zu warten, bis mal jemand eine Frage stellt.
Weiterhin solltest Du Dir vielleicht auch mal die man-page zur Bash durchlesen oder auch eins der vielen tollen Tutorials und Howtos zum Thema Skript-/Shellprogrammierung.

'cuda

alphazero
22.09.06, 09:51
Okay. Tut mir leid.
Ich hoffe aber ihr wollt mir noch helfen.

Bin halt in der Ausbildung und soll mich damit im moment beschäftigen nur ich komm nicht richtig mit klar.

z.b. kenn ich verschachtelungen aus C++, nur in der Korn Shell komm ich damit nicht klar beim schreiben des Scripts.

z.b.:
para=2

set -A parawert \$$para
inhalt=`grep ${parawert[0]} $1`

hier oben leg ich mir ein Array an, hol mir aus meiner variablen para (counter) den aktuellen Wert raus. im momemt 2! Setze vor die 2 mit \$ das
$ Zeichen. dann hol ich mir aus meinem Array $2 wieder heraus mit -> ${parawert[0]}. Das mache ich deshalb weil $2 mir eigentlich
auslesen soll wie der Name des 2ten übergeben Parameter beim Scriptaufruf war. Dann soll er diesen Parameter in der datei $1 suchen

nur das funktioniert nicht. ich glaube der sucht in der datei $1 nach $2 und nicht nach dem übergebenen Parameter der sich
hinter $2 verbrigt z.b. ein String wie "ORA"

ich habe es auch mit verschachtelungen like --> inhalt=`grep `...` $1` <--- probiert, nur irgendwo habsch im internet gelesen das dies nicht geht.
Dort wurden andere Möglichkeiten mit () gezeigt. nur habe ich das nicht hinbekommen, also entweder binsch in Shell ein DAU oder irgendwas stimmt hier nicht.
Ich arbeite an einer AIX 4.3 Maschine über ein Windows Terminal. Eingewählt habsch mich mit "PuTTY"
Default Shell ist ksh und wird sepperat im script nochmal angegeben mit

#! /usr/bin/ksh

Seht ihr Fehler ? Inkompatibilitäten ?

p.s.: ich habe probleme mit der Syntax. Ich lerne aus einem Buch das z.b. dies unter Brace Extensions aufführt:

echo Austr{ia,alien,alia} <----- soll dann 3 ausgaben bringen

Austria Australien Australia <------ das kommt bei mir aber nicht. bei einem Kollegen unter der Bash Shell auf einer Linux Maschine gehts.

Das Buch sagt aber es soll für Bash und Korn Shell gehen. Jetzt frag ich mich wo liegt der Fehler. Großartig kann man ja nichts falsch machen.
Das Buch ist extra für Bash und Korn Shell und beschreibt eigentlich jeden Punkt wo unterschiede zwischen den Shells sind. Naja
ich finde irgendwie die Syntax in C++ einfacher bzw. orientiere mich vielleicht zu sehr an C++.

Könnt ihr mir Tipps geben ?