我知道 Linux 中的一些非常基本的命令,并且正在尝试编写一些脚本。我编写了一个函数,用于计算 5 位数字中最后 2 位数字的总和。该函数应将所得总和连接在最后 2 位数字之间并返回它。我想返回这个值的原因是因为我将在另一个函数中使用这个值。
例如:如果我有 12345,那么我的函数将计算 4+5 并返回 495。
#!/bin/bash
set -x
echo "enter: "
read input
function password_formula
{
length=${#input}
last_two=${input:length-2:length}
first=`echo $last_two| sed -e 's/\(.\)/\1 /g'|awk '{print $2}'`
second=`echo $last_two| sed -e 's/\(.\)/\1 /g'|awk '{print $1}'`
let sum=$first+$second
sum_len=${#sum}
echo $second
echo $sum
if [ $sum -gt 9 ]
then
sum=${sum:1}
fi
value=$second$sum$first
return $value
}
result=$(password_formula)
echo $result
我试图回显并查看结果,但我得到的输出如下所示。
-bash-3.2$ ./file2.sh
+++ password_formula
+++ echo 'enter: '
+++ read input
12385
+++ length=8
+++ last_two=85
++++ echo 85
++++ sed -e 's/\(.\)/\1 /g'
++++ awk '{print $2}'
+++ first=5
++++ echo 85
++++ sed -e 's/\(.\)/\1 /g'
++++ awk '{print $1}'
+++ second=8
+++ let sum=5+8
+++ sum_len=2
+++ echo 5
+++ echo 8
+++ echo 13
+++ '[' 13 -gt 9 ']'
+++ sum=3
+++ value=835
+++ return 835
++ result='enter:
5
8
13'
++ echo enter: 5 8 13
enter: 5 8 13
我还尝试将结果打印为:
password_formula
RESULT=$?
echo $RESULT
但这给出了一些未知的价值:
++ RESULT=67
++ echo 67
67
如何正确存储正确的值并在屏幕上打印(以再次检查)?
最简单的答案:
函数的返回码只能是 0 到 255 范围内的值。
要将这个值存储在变量中,您必须像本示例中那样执行操作:
#!/bin/bash
function returnfunction {
# example value between 0-255 to be returned
return 23
}
# note that the value has to be stored immediately after the function call :
returnfunction
myreturnvalue=$?
echo "myreturnvalue is "$myreturnvalue
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)