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
正しい値を適切に保存し、(再確認するために) 画面に表示するにはどうすればよいですか?
前もって感謝します。