Если все, что вы хотите сделать, это найти многобайтовое безопасное положение H try mb_strpos ()
mb_internal_encoding('UTF-8');
$str = "\xC2\xA1Hola!";
$pos = mb_strpos($str, 'H');
echo $str."\n";
echo $pos."\n";
echo mb_substr($str,$pos,1)."\n";
Выход:
¡Hola!
1
H
вы можете использовать расширение параметра например,
read -p "Enter your name [Richard]: " name
name=${name:-Richard}
echo $name
Включение значения по умолчанию в подсказку между скобками - довольно распространенное соглашение.
В Bash 4:
name="Ricardo"
read -e -i "$name" -p "Please enter your name: " input
name="${input:-$name}"
Это отображает имя после приглашения, например:
Please enter your name: Ricardo
с курсором в конце имени и позволяет пользователю редактировать его. Последняя строка является необязательной и заставляет имя быть исходным по умолчанию, если пользователь стирает ввод или значение по умолчанию (отправляя null).
name=Ricardo
echo "Please enter your name: $name \c"
read newname
[ -n "$newname" ] && name=$newname
Установить значение по умолчанию; распечатать; прочитать новое значение; если есть новое значение, используйте его вместо значения по умолчанию. Между оболочками и системами есть (или были) некоторые различия в том, как подавлять перевод строки в конце приглашения. Обозначение '\ c', похоже, работает в MacOS X 10.6.3 с bash 3.x и работает в большинстве вариантов Unix, производных от System V, с использованием оболочек Bourne или Korn.
Также обратите внимание, что пользователь, вероятно, не осознает, что происходит за кулисами; их новые данные будут введены после имени, уже отображаемого на экране. Возможно, лучше отформатировать его:
echo "Please enter your name ($name): \c"