関数、戻り値、パラメーターの受け渡し、関数呼び出し関数とシェルスクリプトの再帰、関数ライブラリ

1つは、シェル関数です。

コマンドシーケンスを1つの形式でまとめると、コマンドシーケンス
を再利用できます。

1.シェル関数の定義形式:


1.
function 函数名{
    
     

   命令序列
   
 }

2.
  函数名(){
    
     
  
    命令序列
    
  }

2.関数の戻り値

戻る

returnは、関数を終了して終了値を返すことを意味します。値(0-255)は、スクリプトの$?変数で表示できます。
原則:
1。$?はであるため、関数が終了すると戻り値が取得されます。最後のコマンド
2.0-255の判断だけです。それを超えた場合は、256で割り、余りを取ります。
エコーも
実験コードに直接戻ることができます。



[root@rain opt]#vim aaa.sh

#!/bin/bash
#测试

function hs {
    
    
   read -p "请输入任一个值" v
   return $[$v*2]

}

hs
echo "$?"

ここに画像の説明を挿入します
ここに画像の説明を挿入します

エコーして戻る

以下のエコーを使用して戻る場合
ここに画像の説明を挿入します
ここに画像の説明を挿入します

3.機能パラメータの転送

  • 関数変数(ローカル変数とグローバル変数)のスコープ
  • シェルスクリプトの関数は、現在のシェル環境でのみ有効です
  • シェルスクリプトの変数は、デフォルトでグローバルに有効です
  • 変数を関数の内部ローカル、つまりローカル変数に制限します

転送パラメータ



[root@rain opt]#vim demo22.sh

#!/bin/bash
#
 sum1 () {
    
    

sum=$[ $1 + $2 ]
echo $sum


}

sum1 $1 $2

ここに画像の説明を挿入します

[root@rain opt]#sh demo22.sh 20 30
50

ここに画像の説明を挿入します

ローカル変数とグローバル変数

ローカルコマンドを使用して、変数を関数に制限します
。つまり、ローカル変数は現在の関数でのみ有効であり、他の関数では無効です。

[root@rain opt]#vim demo23.sh

#!/bin/bash

abc () {
    
    
echo "函数内的未经过local的$i"
local i
i=6
echo "函数内的是$i"


}

i=9
abc
echo "函数外面的$i"

ここに画像の説明を挿入します
結果:
ここに画像の説明を挿入します

ローカル攻撃:

ここに画像の説明を挿入します

4.再帰(自分自身を呼び出します)

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
初回:合計値は、jc 2の値に3を掛けた値です。
この時点で、入力値は元の3から2に変更されています。上記の手順をもう一度繰り返します。

二度目:JC 1の合計値が2と3、乗算される
1 2 3

5.関数ライブラリ

これは、メイン実行コードと一般スクリプトの定義済み関数部分を互いに分離し、定義済み関数部分を同じスクリプトにまとめることです。特定の実行中に、関数セットのスクリプトファイルを直接呼び出すだけで済みます。Javaでのオブジェクト指向プログラミングの視覚的感覚に少し似ています。
ここでは、足し算、引き算、掛け算、割り算の4つの関数のライブラリを作成しました。

#!/bin/bash
#函数库

jia(){
    
    
  result=$[ $1 + $2 ]
   echo "$result" 
}

jian(){
    
    
  result=$[ $1 - $2 ]
  echo "$result"
}

cheng(){
    
    
  result=$[ $1 * $2 ]
  echo "$result"
}

chu(){
    
    
  if [ $2 -ne 0 ]
  then
  result=$[ $1 / $2 ]
  echo "$result"
  else
  echo"除法所输入不能为0"
  fi
}

ここに画像の説明を挿入します
ここでスクリプトを実行し、関数ライブラリを呼び出して計算を完了します。


#!/bin/bash
. /opt/ku.sh

#加减乘除

read -p "请输入第一个数字" f
read -p "请输入第二个数字" s

result1=`jia $f $s`
result2=`jian $f $s`
result3=`cheng $f $s`
result4=`chu $f $s`

echo "第一个数字与第二个数字的和为:$result1"
echo "第一个数字与第二个数字的差为:$result2" 
echo "第一个数字与第二个数字的积为:$result3" 
echo "第一个数字与第二个数字的商为:$result4" 

ここに画像の説明を挿入します
結果:
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_44324367/article/details/111506721