Bash: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 64: | Zeile 64: | ||
<source lang=bash> | <source lang=bash> | ||
function Example(){ | function Example(){ | ||
local file=/tmp/dummy | local file=/tmp/dummy | ||
local line | |||
local | while read line; do | ||
echo "$line" | |||
while | done < $file | ||
done | |||
} | } | ||
Example | |||
</source> | </source> | ||
Aktuelle Version vom 7. Februar 2024, 18:17 Uhr
Links[Bearbeiten]
Entfernen eines Präfixes[Bearbeiten]
- Syntax: ${name#muster} oder ${name##muster}
- Wird am Anfang des Variablenwertes das Muster erkannt, wird dieses abgeschnitten.
- Die Syntax des Musters ist wie bei der Dateinamensexpansion: *, ? und [] sind Metazeichen.
- Die erste Variante findet das kürzestmögliche Muster, die 2.te das längstmögliche.
X=Datei.01.txt ; echo "#:" ${X#*.} "##:" ${X##*.}
#: 01.txt ##: txt
Entfernen eines Suffixes[Bearbeiten]
- Syntax: ${name%muster} oder ${name%%muster}
- Wird am Ende des Variablenwertes das Muster erkannt, wird dieses abgeschnitten.
- Die Syntax des Musters ist wie bei der Dateinamensexpansion: *, ? und [] sind Metazeichen.
- Die erste Variante findet das kürzestmögliche Muster, die 2.te das längstmögliche.
X=Datei.01.txt ; echo "%:" ${X%.*} "%%:" ${X%%.*}
%: Datei.01 %%: Datei
Ersetzen eines Teilstrings[Bearbeiten]
- Syntax: ${name/muster/ersetzung}
- Wird das Muster im Variablenwert gefunden, wird es einmal ersetzt.
- Sollen alle Teilstrings ersetzt werden gilt die Syntax:
- ${name//muster/ersetzung}
- Die Syntax des Musters ist wie bei der Dateinamensexpansion: *, ? und [] sind Metazeichen.
- '\' ist ESC-Zeichen: das folgende Zeichen wird nicht als Metazeichen interpretiert
X=Datei.01.txt ; echo ${X/Datei./artikel_}
UNIX_PATH=/abc/def ; WIN_PATH=${UNIX_PATH//\//\\} ; echo $WIN_PATH
artikel_01.txt \abc\def
Suchen eines regulären Ausdrucks[Bearbeiten]
- Syntax: expr $name : <regex>
- expr liefert als Ergebnis 0, wenn der Ausdruck gefunden wurde, 1 wenn nicht.
- Hinweis: der reg. Ausdruck bezieht sich immer auf den Stringanfang, enthält also implizit einen "^".
- folgende Syntaxelemente habe ich gefunden:
- beliebig oft: "a*"
- maximal einmal: "a\?"
- mindestens einmal: "a\+"
- Anzahl Vorkommen "a\{1,5\}"
- Klammerung "\(T:)\?[0-9-]*"
- Alternativen: "affe\|gnu"
- Hinweis: expr gibt zusätzlich die Länge des gefundenen Ausdrucks aus, also nach /dev/null umleiten, wenn nicht gewünscht
X="ab2"
if expr $X : "[a-z][a-z0-9]* > /dev/null ; then
echo "X ist ein Identifier"
fi
Datei zeilenweise abarbeiten[Bearbeiten]
function Example(){
local file=/tmp/dummy
local line
while read line; do
echo "$line"
done < $file
}
Example
Text einlesen (read)[Bearbeiten]
read answer "= Say something"
echo $answer