Set: Unterschied zwischen den Versionen
K →Syntax |
K Textersetzung - „Man-Pages“ durch „Man-Page“ |
||
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE:set}} | |||
= Beschreibung = | = Beschreibung = | ||
* die das Verhalten der Shell maßgeblich beeinflussen | * die das Verhalten der Shell maßgeblich beeinflussen | ||
Zeile 20: | Zeile 22: | ||
= Syntax = | = Syntax = | ||
set [Optionen] [Parameterliste] | |||
== Parameter == | == Parameter == | ||
== Optionen == | == Optionen == | ||
Zeile 25: | Zeile 28: | ||
= Konfiguration = | = Konfiguration = | ||
= | = Anwendung = | ||
set eins zwei drei vier besetzt die Parameter mit $1=eins, $2=zwei, $3=drei und $4=vier. Da dabei auch Leerzeichen, Tabs, Zeilenwechsel und anderes "ausgefiltert" wird (genauer alles, was in der Variablen IFS steht), ist set manchmal einfacher zu verwenden, als die Zerlegung einer Zeile mit cut. | set eins zwei drei vier besetzt die Parameter mit $1=eins, $2=zwei, $3=drei und $4=vier. Da dabei auch Leerzeichen, Tabs, Zeilenwechsel und anderes "ausgefiltert" wird (genauer alles, was in der Variablen IFS steht), ist set manchmal einfacher zu verwenden, als die Zerlegung einer Zeile mit cut. | ||
Die Belegung der Parameter kann auch aus einer Variablen (z. B. set $VAR) oder aus dem Ergebnis eines Kommandoaufrufs erfolgen. | Die Belegung der Parameter kann auch aus einer Variablen (z. B. set $VAR) oder aus dem Ergebnis eines Kommandoaufrufs erfolgen. | ||
set `date` # $1=Fri $2=Apr $3=28 $4=10:44:16 $5=MEZ $6=1999 | set `date` # $1=Fri $2=Apr $3=28 $4=10:44:16 $5=MEZ $6=1999 | ||
echo "Es ist $4 Uhr" | echo "Es ist $4 Uhr" | ||
Es ist 10:44:16 Uhr | Es ist 10:44:16 Uhr | ||
'''Fallstricke''' | |||
Wenn man beispielsweise den Output von "ls" bearbeiten möchte, gibt es zunächst unerklärliche Fehlermeldungen (set: unknown option): | Wenn man beispielsweise den Output von "ls" bearbeiten möchte, gibt es zunächst unerklärliche Fehlermeldungen (set: unknown option): | ||
Zeile 87: | Zeile 48: | ||
rm foo | rm foo | ||
Da die Zeile mit dem Dateityp und den Zugriffsrechten beginnt, und für normale Dateien ein "-" am Zeilenbeginn steht, erkennt set eine falsche Option (z. B. "-rwxr-xr-x"). Abhilfe schafft das Voranstelle eines Buchstabens: | Da die Zeile mit dem Dateityp und den Zugriffsrechten beginnt, und für normale Dateien ein "-" am Zeilenbeginn steht, erkennt set eine falsche Option (z. B. "-rwxr-xr-x"). Abhilfe schafft das Voranstelle eines Buchstabens: | ||
ls -l > foo | ls -l > foo | ||
echo "Dateiname Laenge" | echo "Dateiname Laenge" | ||
Zeile 118: | Zeile 79: | ||
esac | esac | ||
echo $tag $3.$2 $4 $6 $5 | echo $tag $3.$2 $4 $6 $5 | ||
= Links = | |||
== Dateien == | |||
== Man-Page == | |||
== Intern == | |||
== Weblinks == | |||
=Kontrollfragen= | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 1'' | |||
<div class="mw-collapsible-content">'''Antwort1'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 2'' | |||
<div class="mw-collapsible-content">'''Antwort2'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 3'' | |||
<div class="mw-collapsible-content">'''Antwort3'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 4'' | |||
<div class="mw-collapsible-content">'''Antwort4'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 5'' | |||
<div class="mw-collapsible-content">'''Antwort5'''</div> | |||
</div> | |||
[[Kategorie:Bash/Scripting]] | |||
[[Kategorie:Bash/Builtin]] | |||
[[Kategorie:Bash/Konfiguration]] | |||
[[Kategorie:Bash/Variablen]] | |||
{{DEFAULTSORT:set}} |
Aktuelle Version vom 6. November 2024, 12:54 Uhr
Beschreibung
- die das Verhalten der Shell maßgeblich beeinflussen
- Sie können sich alle aktuell gesetzten Shellvariablen anzeigen lassen, indem Sie das Kommando
set
ohne Optionen und Argumente verwenden.
Da die Ausgabe des Kommandos recht umfangreich ist, lohnt sich eine Ausgabe mit dem Pager less
:
# set | less BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() ...
- Setzen von Shell-Optionen und Positionsparametern ($1 ... $n).
- Einige Optionen: * v Gibt die eingelesenen Shell-Eingaben auf dem Bildschirm aus.
- x Gibt alle Kommandos vor der Ausführungen aus (--> zeigt Ersetzungen).
- n Liest die Kommandos von Shell-Skripten, führt sie jedoch nicht aus.
- Der Aufruf von set ohne Parameter liefert die aktuelle Belegung der Shell-Variablen.
- Außerdem kann set verwendet werden, um die Positionsparameter zu besetzen.
Installation
Syntax
set [Optionen] [Parameterliste]
Parameter
Optionen
Konfiguration
Anwendung
set eins zwei drei vier besetzt die Parameter mit $1=eins, $2=zwei, $3=drei und $4=vier. Da dabei auch Leerzeichen, Tabs, Zeilenwechsel und anderes "ausgefiltert" wird (genauer alles, was in der Variablen IFS steht), ist set manchmal einfacher zu verwenden, als die Zerlegung einer Zeile mit cut.
Die Belegung der Parameter kann auch aus einer Variablen (z. B. set $VAR) oder aus dem Ergebnis eines Kommandoaufrufs erfolgen.
set `date` # $1=Fri $2=Apr $3=28 $4=10:44:16 $5=MEZ $6=1999 echo "Es ist $4 Uhr" Es ist 10:44:16 Uhr
Fallstricke
Wenn man beispielsweise den Output von "ls" bearbeiten möchte, gibt es zunächst unerklärliche Fehlermeldungen (set: unknown option):
ls -l > foo echo "Dateiname Laenge" while read LINE do set $LINE echo $9 $5 done < foo rm foo
Da die Zeile mit dem Dateityp und den Zugriffsrechten beginnt, und für normale Dateien ein "-" am Zeilenbeginn steht, erkennt set eine falsche Option (z. B. "-rwxr-xr-x"). Abhilfe schafft das Voranstelle eines Buchstabens:
ls -l > foo echo "Dateiname Laenge" while read LINE do set Z$LINE echo $9 $5 done < foo rm foo
Weitere Beispiele: Wenn ein Benutzer eingeloggt ist, wird ausgegeben seit wann. Sonst erfolgt eine Fehlermeldung.
if HELP=`who | grep $1` then echo -n "$1 ist seit " set $HELP echo "$5 Uhr eingeloggt." else echo "$1 ist nicht auffindbar" fi
Ersetzen der englischen Tagesbezeichung durch die deutsche:
set `date` case $1 in Tue) tag=Die;; Wed) tag=Mit;; Thu) tag=Don;; Sat) tag=Sam;; Sun) tag=Son;; *) tag=$1;; esac echo $tag $3.$2 $4 $6 $5
Links
Dateien
Man-Page
Intern
Weblinks
Kontrollfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5