shell中程序调试问题 不知道哪错了 求解答

#!/bin/bash
function a
{
read -p "input: " value
echo -n "doubling the value "
return $[ $value * 2 ]
}

a
echo "the new value is $?"

我想让输入的数的两倍大于255时,程序输出的值为1
如果我输入的数的两倍不大于255那么输出的值是正确的
可是现在,比如当我输入200的时候 结果为144
输入310的时候,结果为108,这是为什么?
我的程序哪里错了?

[longyu@debian: 二 3月 22 11:31:10] $ vi char_num.sh
[longyu@debian: 二 3月 22 11:31:36] $ sh char_num.sh
input:200
doubling the value:
400
[longyu@debian: 二 3月 22 11:31:45] $ sh char_num.sh
input:300
doubling the value:
600

https://zhangge.net/1517.html

declare -i value

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/texlive/2015/bin/x86_64-linux

number () {
read -p "input:" value
echo -n "doubling the value"
return $(($value * 2))
}
number
echo ":\n$?"

0-255都是返回值