Для транслитерации русских букв в английские я предлагаю использовать следующий скрипт на bash:
#!/bin/bash
# Массив соответствия русских букв английским
declare -A translit_map=(
["а"]="a" ["б"]="b" ["в"]="v" ["г"]="g" ["д"]="d" ["е"]="e"
["ё"]="yo" ["ж"]="zh" ["з"]="z" ["и"]="i" ["й"]="y" ["к"]="k"
["л"]="l" ["м"]="m" ["н"]="n" ["о"]="o" ["п"]="p" ["р"]="r"
["с"]="s" ["т"]="t" ["у"]="u" ["ф"]="f" ["х"]="h" ["ц"]="ts"
["ч"]="ch" ["ш"]="sh" ["щ"]="sch" ["ъ"]="" ["ы"]="y" ["ь"]=""
["э"]="e" ["ю"]="yu" ["я"]="ya"
)
# Функция для транслитерации строки
function translit() {
local input="$1"
local output=""
for (( i=0; i<${#input}; i++ )); do
local char="${input:$i:1}"
local lower_char="${char,,}" # Преобразуем в нижний регистр
if [[ ${translit_map[$lower_char]} ]]; then
# Если есть соответствие в массиве, добавляем в выходную строку
output+="${translit_map[$lower_char]}"
else
# Иначе добавляем символ без изменений
output+="$char"
fi
done
echo "$output"
}
# Пример использования
input="Привет, мир!"
translit_output=$(translit "$input")
echo "$translit_output"
Результат:
Privet, mir!
В данном скрипте реализован массив translit_map, в котором определены соответствия русских букв английским. Функция translit принимает строку в качестве аргумента и проходит по ней символ за символом, заменяя русские буквы на английские согласно массиву translit_map. Результат транслитерации выводится на экран. Пример использования приведен в конце скрипта.