cut -c1
Dies ist POSIX und case
extrahiert im Gegensatz zum eigentlichen Zeichen das erste Zeichen, wenn Sie es für später benötigen:
myvar=abc
first_char="$(printf '%s' "$myvar" | cut -c1)"
if [ "$first_char" = a ]; then
echo 'starts with a'
else
echo 'does not start with a'
fi
awk substr
ist eine andere POSIX, aber weniger effiziente Alternative:
printf '%s' "$myvar" | awk '{print substr ($0, 0, 1)}'
printf '%s'
Um Probleme mit Escape-Zeichen zu vermeiden: https://stackoverflow.com/a/40423558/895245 Beispiel:
myvar='\n'
printf '%s' "$myvar" | cut -c1
Ausgänge \
wie erwartet.
${::}
scheint nicht POSIX zu sein.
Siehe auch: Wie extrahiere ich die ersten beiden Zeichen einer Zeichenfolge in Shell-Skripten?