Источником проблемы, о которой сообщается в вопросе, является пустое значение decvalue
, поскольку syme уже указано.
Учитывая цель сценария, кажется, вы пытались написатьрекурсивная функция. По этой причине я предлагаю вам следовать комментарию под вашим вопросом от jww относительно отладки!
Более того, вам предлагается искать вопросы по рекурсивным функциям в bash по SO. В bash есть отличные ответы для факторных вычислений.
Подумайте, какие количества «транспортируются», а какие возвращаются / компилируются в конце.
Если вы действительно застряли, вы найдете 90% решения ниже.
#!/bin/bash
romanLetters(){
local decvalue=$1
local roman
declare -i decvalue
if [ $decvalue -ge 1000 ]; then
romanvalue="M$(romanLetters $((decvalue - 1000)))"
echo $romanvalue
elif [ $decvalue -ge 900 ]; then
romanvalue="CM$(romanLetters $((decvalue - 900)))"
echo $romanvalue
# ... and so on ...
fi
}
echo "1900: $(romanLetters 1900)"