POSIXLY:
for w in script.sh text.txt pic_1.png; do
w=${w%.*}
all_but_last_char=${w%?}
w=${w##"$all_but_last_char"}
printf '%s\n' "$w"
done
Обратите внимание, что он не работает с символами Unicode в некоторых оболочках, таких как mksh
, dash
.
Прежде всего, удалите расширение, если оно есть:
name_no_ext=${file%.*}
тогда вы получите последний символ:
char=${name_no_ext: -1} #note the space after colon
Если вы хотите узнать больше о манипуляциях со строками в bash, перейдите к разделу Расширение параметров
руководства bash.