bash: Befehlszeilenparameter korrekt verarbeiten ($* != $@)

Problem

Es besteht die Notwendigkeit, ein Skript mit mehreren Parametern zu füttern. Diese Parameter enthalten ggf. Leerzeichen. Damit werden sie ggf. als eigener Parameter verarbeitet.

Lösung

Der Unterschied besteht in der Verwendung von $* oder $@.

for i in "$*"
do
  echo "parameter: $i"
done

Beim Aufruf von script 1 ‘2 3 4’ 5 erfolgt folgende Ausgabe:

parameter: 1
parameter: 2
parameter: 3
parameter: 4
parameter: 5

Anders verhält es sich bei $@:

for i in "$*"
do
  echo "parameter: $i"
done

Die Ausgabe beim gleichen Befehl ist

parameter: 1
parameter: 2 3 4
parameter: 5
 
wissen/tips_und_tricks/bash/command-line-parameters-korrekt-verarbeiten.txt · Zuletzt geändert: 05.09.2010 20:31
 
Recent changes RSS feed Donate Valid XHTML 1.0 Valid CSS Recent cached RSS feed cacert-signed web site: inhalt.serviert.de