Seite 1 von 1

"einfache" Shell Skript Frage

Verfasst: 22.01.2011, 09:38
von cHises
.. hoffe mir kann es hier jemand ganz kurz erläutern weshalb bei folgendem Skript:

Code: Alles auswählen

#!/bin/sh

echo $TMP #VARIABLE leer
for TMP
do :
echo $TMP #Variable enthält Daten
done
die Variable am Anfang leer ist uns später Daten enthält.
aufruf: programmName pm1 pm2 pm3

Beim ersten "echo" wird nichts ausgegeben und beim Durchlauf der for-Schleife werden beim echo die Parameter nach und nach ausgegeben ($1, $2, $3)

Bitte um aufklärung. Was bewirkt der Befehl

Code: Alles auswählen

for variable

genau? wieso werden da Daten in variable gespeichert?

Verfasst: 22.01.2011, 10:20
von pawlak
Da fehlt aber was. Es wird nichts von $1, $2 oder $3 ausgegeben, davon steht ja auch nichts im Script.

Edit: man sollte natürlich erstmal einen Kaffee trinken und das Script dann auch mit $1,2,3 aufrufen :_

Verfasst: 22.01.2011, 10:28
von onkelcolo
Aus bash(1):

Code: Alles auswählen

       for name [ [ in [ word ... ] ] ; ] do list ; done
              The  list  of words following in is expanded, generating a list
              of items.  The variable name is set to  each  element  of  this
              list  in  turn, and list is executed each time.  [color=lightblue][b]If the in word
              is omitted, the for command executes list once for  each  posi‐
              tional  parameter  that  is  set[/b][/color]  (see  PARAMETERS below).  The
              return status is the exit status of the last command that  exe‐
              cutes.   If  the expansion of the items following in results in
              an empty list, no commands are executed, and the return  status
              is 0.
Diese "positional parameters" sind $1, $2, ... $9, und werden durch den Argumentvektor an der aufrufenden Kommandozeile gesetzt.

Der Doppelpunkt : hinter deinem do ist uebrigens kein Teil der Syntax, sondern ein (ueberfluessiger) Aufruf eines Shell-Builtins, das immer EXIT_SUCCESS zurueckgibt (wie auch z. B. /bin/true).

Verfasst: 22.01.2011, 12:01
von cHises
danke, der auszug hat es mir nun klar gemacht :) ty!