String
Anzahl Zeichen | Ergebnis | VBA | ||
string="Ein Text" |
||||
echo ${#string} |
8 | len(str) | ||
Zeichen ersetzen | Ergebnis | VBA | Anmerkung | ||
string="Guten Morgen zusammen" string1="Morgen" |
|||||
string2="Abend" |
|||||
echo "${string/$string1/$string2}" |
Guten Abend zusammen | replalce() | Wird nur einmal ersetzt | ||
Zeichen mehrfach ersetzen | |||||
|
|||||
string='Der Geheimcode ist 12345' echo "${string//[0-9]/X}" |
Der Geheimcode ist XXXXX |
Teil einer Zeichenkette | Ergebnis | VBA | ||||
string="1234567890" |
||||||
${string:Start:Länge} |
Start beginnt mit 0. Angabe nicht notwendig | |||||
echo ${string::3} |
123 | Die ersten 3 Zeichen | left(str,3) | |||
echo ${string:2} |
34567890 | ab dem 3. Zeichen | ||||
echo ${string:2:1} |
3 | ab dem 3. Zeichen: nur 1 Zeichen | mid(str,3,1) | |||
${string:Start: -Länge} |
Abzüglich x Zeichen von rechts | |||||
echo ${string:0: -3} |
1234567 | |||||
echo ${string:1: -3} |
234567 | |||||
${string:: -4]} ${string:$[${#string}-4]} |
7890 | letzten 4 Zeichen | right(str,4) | |||
string="c:/Order eins/gesuchter Name.txt" |
||||||
echo ${string%/*} |
c:/Order eins | Pfad aus Datei-Namen (kompletter Pfad) | ||||
path=${string%/*} |
Dateinamen aus kompletten Pfad auslesen | |||||
|
||||||
echo $filename |
gesuchter Name.txt | |||||
string=" ja am Anfang und Ende sind Leerzeichen " |
||||||
echo $(echo $string|xargs) |
ja am Anfang und Ende sind Leerzeichen | Leerzeichen am Anfang und Ende abschneiden | trim(str) | |||
Zeichenposition | ||||||
string=" |
name@www |
|||||
echo $[${#teilstring1}+1] echo $[${#teilstring2}+1] |
9 13 |
InStr() | ||||
Enthält Zeichenkette | ||||||
string=" |
||||||
such="@" |
||||||
if [ -z "${string##*$such*}" ]; then echo "Suchstring '$such' ist enthalten." fi |
||||||
Umwandeln in Kleinbuchstaben | Ergebnis | VBA | ||||
string="EIN PAAR WORTE" |
||||||
echo "${string,,}" |
ein paar worte | LCase(str) | ||||
echo "${string,}" |
eIN PAAR WORTE | 1. Buchstabe klein | ||||
echo "${string,,[AEIUO]}" |
eiN PaaR WoRTe | |||||
declare -l string |
ein paar worte | Bestimme Buchstaben | ||||
Umwandeln in Großbuchstaben | ||||||
string="ein paar worte" |
||||||
echo "${string^}" |
Ein paar worte | |||||
echo "${string^^}" |
EIN PAAR WORTE | |||||
|
EIn pAAr wOrtE | Goßschreiben per RegEx | UCase(str) | |||
string="Ein paar Worte" echo "${string~~}" |
EIN PAAR WORTE | Alle Buchstaben groß | ||||
echo "${string~}" |
Ein paar worte | 1. Buchstabe groß |
Pfad und Dateinamen aus komplettem Datei-Pfad auslesen
Ergebnis als echo | Ergebnis als echo | |||||
string="c:/tmp xc/gesuchter Name.txt" |
||||||
Pfad | ||||||
pfad=${string%/*} |
c:/tmp xc | pfad=${string%/*} |
||||
Position des letzen "/" Slashes | Position des letzen "/" Slashes +1 | |||||
pos=${#pfad} |
9 | pos2=$[${#pfad}+1] |
10 | |||
Dateiname | Dateiname | |||||
dateiname=${string:$[$pos+1]} |
gesuchter Name.txt | dateiname=${string:$pos2} |
gesuchter Name.txt | |||
Dateiname ohne Posistion (2 Schritte) | ||||||
dateiname=${string:$[${#pfad}+1]} |
gesuchter Name.txt |
Bytes umwandeln damit es verständlich für Menschen ist
Ergebnis | ||||
int=139356160 |
||||
|
133M | |||
echo "133M"|numfmt --from=iec numfmt --from=iec "133M" |
139356160 |
Array
arr=() |
Leeres Array erzeugen |
arr=(1 2 3) arr=(a "a b" c) |
Array erstellen |
${arr[2]} |
3. Element auswählen |
${arr[@]} |
Alle Elemente erhalten |
${!arr[@]} |
Array-Indizes erhalten |
${#arr[@]} |
Array Größe |
arr[0]=3 |
1. Element überschreiben |
arr+=(4) arr+=( "newElement1" "newElement2" ) |
Wert anhängen |
str=$(ls) |
ls Ausgabe output als String |
arr=( $(ls /dir) ) |
ls Ausgabe als array von Dateien |
${arr[@]:s:n} |
Anzahl n Elemente. Startet ab Index s |
Alle Elemente eines Array ausgebenfor t in ${array[@]}; do
echo $t
done
Alle Elemente eines Array über den Indexfor i in ${!array[@]}; do
echo ${array[$i]}
done
sting="${array[*]// /}" |
sting="$(echo ${array[*]})" |
Element aus Array löschen | ||||
array=(eins zwei drei) |
||||
echo ${#array[@]} |
3 | |||
Element zwei löschen | ||||
unset 'array[1]' |
||||
echo ${array[@]} |
ein drei | |||
echo ${#array[@]} |
2 | |||
Besteht der Namen aus zwei Zahlen und einem Trennzeichen kann das Array-Element darüber angesprochen werden.
declare -A arr | Deklarieren des Arays | |||
arr[0,0] ="erster_Wert" | ||||
arr[0,1] ="zweiter_Wert" | ||||
i=0 | ||||
j=1 | ||||
echo $arr[$i,$j] | zweiter_Wert |
Überprüfen
Ist Variable eine Zahl ? (Integer) | ||||
case ${var#[-+]} in *[!0-9]* | '') echo "Keine Zahl";; * ) echo "Zahl (Integer)";; esac |
Fall-Variante | |||
if [ -z "${var//[0-9]}" ]; then echo "Zahl (Integer)" else echo "Keine Zahl" fi |
Wenn-Dann Variante |
Rechnen mit Ganzahlen (integer) | ||||
Addition | Subtraktion | Muktipikation | Division | |
i=0 |
||||
i=$[$i+1] let i=${i}+1 |
i=$[$i-1] let i=${i}-1 |
i=$[$i*1] let i=${i}*1 |
i=$[$i/1] let i=${i}/1 |
|
Logische Ausdrücke
Zahlen (Integer) | |||
x=1 y=2 |
|||
[ $x -gt $y ] |
größer | ||
[ $x -ge $y ] |
größer gleich | ||
[ $x -eq $y ] |
gleich | ||
[ $x -ne $y ] |
ungleich | ||
[ $x -lt $y ] |
kleiner | ||
[ $x -le $y ] |
kleiner gleich | ||
a=hallo |
|||
[ $x -le $y -o $a = "hallo" ] [ $x -le $y ] || { $a = "hallo" ] |
oder | ||
[ $x -le $y -a $a = "hallo" ] [ $x -le $y ] && [ $a = "hallo" ] |
und |
Zeichenkette | |||
[ "$x" = "$y "] |
gleich | ||
[ "$x" != "$y" ] |
ungleich | ||
[ -z "$x" ] |
ist leer | ||
[ -n "$x" ] |
ist nicht leer |
Funktionen
Überprüfen ob die korrekte Anzahl an Parametern über geben wurde
# 2 Parameter erforderlichfunction test () {
if [ $# -ne 2 ]; then
echo "Hier sind mindestens 2 Argumente erforderlich"
echo "usage: $0 arg1 arg2 ... [arg_n]"
exit
else
echo "Erforderliche Anzahl Argumente erhalten"
fi
}
übergebene Parameter an Funktionfunction test2 () {
echo $1
echo $2
}
test2 "hallo" 7
Rüchgabe aus einer Funktion
Zahlenfunction zahl_zurueck () {
return 1
}
Zeichenfunction zeichenkette_zurueck () {
echo "hallo"
}
Ausgabe auf Terminalzahl_zurueck
Ausgabe in eine Variableinfo=$(zeichenkette_zurueck)
Rechnen
Ergebnis ist immer eine Ganzzahl (Integer). Es gelten die mathematischen Grundregeln (Klammer vor Punkt vor Strich).
Ergebnis | |||||||
x=100 | |||||||
Addition | y=$[$x+10] | y=$(($x+10)) | echo $y | 110 | |||
Subtraktion | z=$[$x-110] | z=$(($x-110)) | echo $z | -10 | |||
Mutiplikation | a=$[$x*-11] | z=$(($x*-11)) | echo $a | -1100 | |||
Division | b=$[10/9] | b=$((10/9)) | echo $b | 1 (Vorkommazahl) | |||
Mod | b=$[10/8] c=$[10/10] |
c=$((10/8)) c=$((10/10)) |
echo $b echo $c |
2 (Rest. 8 geht in 10 ein mal. Bleibt 2 übrig) 0 |
Funktionen
Ascii Zahlen aus Zeichenkette auslesen
read -p "Enter a string of characters: " input_string
echo "ASCII values of characters in the input string:"
for ((i = 0; i < ${#input_string}; i++)); do
character="${input_string:i:1}"
ascii_value=$(printf "%d" "'$character")
echo "$character: $ascii_value"
done