我知道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