Я пытаюсь преобразовать последний символ переменной в нижний.
MY_STRING = "THE_NAME_UPPER_A"
Я хочу изменить это на THE_NAME_UPPER_a
. я пробовал это
MY_NEW_STRING = "${MY_STRING,,A}"
но он меняет все A
на a
, я просто хочу изменить последний.
Если я вас правильно понимаю, вы можете использовать tr:
## Your string
MY_STRING = "THE_NAME_UPPER_A"
## Everything but the last character
prefix = "${MY_STRING:0:$((${#MY_STRING}-1))}"
## Getting the last character
lastChar = "${MY_STRING: -1}"
## Change last character to lowercase
lastCharLow = "$(echo "$lastChar" | tr '[:upper:]' '[:lower:]')"
## Combine it all and echo
echo "${prefix}${lastCharLow}"
устраните двойные подоболочки, необходимые для $(echo ... | tr ...)
, с помощью lastCharLow = "${lastChar,,}"
В обычном bash без использования внешней команды:
my_string = "THE_NAME_UPPER_A"
lastchar=${my_string: -1}
my_new_string=${my_string:: -1}${lastchar,}
echo "$my_new_string"
Вы имеете в виду, что пытаетесь преобразовать последний символ строки в нижний?