我知道一些Linux的基本命令,正在尝试编写一些脚本。我已经编写了一个函数,用于计算一个5位数的最后2位数字的和。该函数应该将这个结果连接在最后2位数字之间并返回它。我的目的是为了在其他函数中使用此值,因此需要返回它。例如:如果我有12345,则我的函数将计算4 + 5并返回495。
我正在尝试使用echo命令并查看结果,但我得到的输出如下所示。
我该如何正确存储值并在屏幕上打印出来(以进行双重检查)?
#!/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
我正在尝试使用echo命令并查看结果,但我得到的输出如下所示。
-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#?}
。 - William Pursell