如何扩展此脚本以处理大于255的数字?

时间:2014-03-04 03:50:56

标签: bash

我一直在阅读这个脚本和它的一些来源,但我无法弄清楚如何使用大于255的数字?我读了一些关于标准的内容,但我对此非常陌生。在此先感谢您的帮助!

我想注意这个原始帖子的遗留下来不是我的脚本! 这是我在google上找到的bash罗马数字脚本!

# numIn reads in user input from command line as an argument.
# numMax sets the maximum input by user.
# numMin sets the minimum input by user.

numIn=$1
numMax=3999
numMin=1

#Checks to see if command line was empty, if empty, prompts for an input.
if 
    [[ "$numIn" == "" ]]; then
    read -p "Please enter a number between 3999 and 1: " numIn
    if
        [[ "$numIn" -gt "$numMax" ]]; then
        read -p "Please enter a number smaller than 4000: " numIn
    fi
    if
        [[ "$numIn" -lt "$numMin" ]]; then
        read -p "Please enter a number larger than 0: " numIn
    fi
fi

#Displays numer entered for conversion.
echo "The number you entered is $numIn."

这个romanConvert不是我的!这是我发现的部分并且正在努力想出来!我改变了一些名字并尝试自己编写,就像我对你的命名方式的理解一样。

romanConvert ()
{
number=$numIn
factor=$2
rchar=$3
let "remainder = number - factor"
while [ "$remainder" -ge 0 ]
do
    echo -n $rchar
    let "number -= factor"
    let "remainder = number - factor"
done  
return $number
}

romanConvert $numIn 1000 M
numIn=$?
romanConvert $numIn 900 CM
numIn=$?
romanConvert $numIn 500 D
numIn=$?
romanConvert $numIn 400 CD
numIn=$?
romanConvert $numIn 100 C
numIn=$?
romanConvert $numIn 90 XC
numIn=$?
romanConvert $numIn 50 L
numIn=$?
romanConvert $numIn 40 XL
numIn=$?
romanConvert $numIn 10 X
numIn=$?
romanConvert $numIn 9 IX
numIn=$?
romanConvert $numIn 5 V
numIn=$?
romanConvert $numIn 4 IV
numIn=$?
romanConvert $numIn 1 I
echo
exit

1 个答案:

答案 0 :(得分:4)

而不是return只是回显值 然后存储它

numIn=$(romanConvert params)

[另外,不清楚你使用numIn,它没有在第一次调用中初始化]


编辑:

根据您的完整示例,这是一种可行的方式,请注意,因为该函数有2个输出(下一个inNum和rchar),我实际上是通过将rchar回显到{{1}来攻击的} stderr使用stdout时。正如我所说的那样,但是试图尽量减少对脚本的更改。替代方案可能是让函数返回可以在数组或其他解决方案中捕获的内容,例如根本不使用函数

numIn