我知道Linux中的一些非常基本的命令,并且正在尝试编写一些脚本。我写了一个函数,用于计算5位数字中最后两位数的总和。该函数应该在最后2位数之间连接这个结果总和并返回它。我想返回这个值的原因是因为我将在另一个函数中使用这个值。在bash中,如何将返回值存储在变量中?
例如:如果我有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
我怎样才能正确地存储正确的值,并打印(以双重检查)在屏幕上?
在此先感谢。
这里使用反引号似乎不合适。你可以做'first = $ {last_two:0:1}'和'second = $ {last_two:1:1}',或'first = $ {last_two%?}'和'second = $ {last_two#?} ' – 2013-02-21 23:18:24
“返回”语句对于那些习惯了高级语言的人来说是误导性的 - 更好的名字可能是“exit_status”。如果你想返回一个由字符串值或数值大于255组成的结果,那么它必须通过“回声”或其他输出到标准输出的方式完成。 – MikeW 2018-02-19 14:38:40