cut -c1
C'est POSIX, et contrairement à case
il extrait en fait le premier caractère si vous en avez besoin pour plus tard :
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
est une autre commande POSIX, mais une alternative moins efficace :
printf '%s' "$myvar" | awk '{print substr ($0, 0, 1)}'
printf '%s'
est d'éviter les problèmes liés aux caractères d'échappement : Bash printf littéral chaîne verbatim par exemple,
myvar='\n'
printf '%s' "$myvar" | cut -c1
sorties \
comme prévu.
${::}
ne semble pas être POSIX.
Voir aussi : Comment extraire les deux premiers caractères d'une chaîne de caractères en script shell ?