シェルスクリプト - 高度な利用機能

関数2命名フォーマットは、第一ベルト()はないと秒()の

第一种小括号的
函数名(){
.......
commend
.......
}


第一种不带小括号的
function 函数名{
.......
commend
.......
}

パラメータの伝達関数

int example_1(int arg1,int arg2) 
{
    arg1 = arg2
    ......
    ......
    return null
}

例えば

int num1=10;
int num2=20;

函数调用形式一:int num3=example_1(num1,num2);
函数调用形式二:int num4;
             num4=example_1(num1,num2);

シェルのパラメータの受け渡し

function name
{
    echo "Hello $1"
    echo "Hello $2"
}

#调用方式

name LIly Allen

次のようにCalcut.shが書かれて:

#!/bin/bash
function calcu
{
	case $2 in
		+)
			echo "`expr $1 + $3`"
			;;
		-)
			echo "`expr $1 - $3`"
			;;
		\*)
			echo "`expr $1 \* $3`"
			;;
		/)
			echo "`expr $1 / $3`"
			;;
	esac
}

calcu $1 $2 $3

以下の結果は、11 + 22を./calcut.sh実行

~:$ ./calcut.sh 11 + 22
33

関数の戻り値

唯一の整数1〜255を返す戻り値に使用復帰

0成功旗、旗1つの失敗、関数の戻り値の戻り値を使用することは通常は一般的にのみ、0または1を返し、残りの状態を取得するための呼び出しを提供するために使用されます。

 

エコーは、任意の文字列の結果を返すことができます使用してください。

一般に、このような文字列または値のリストとして、データを返すために使用

 

                  函数的返回方式
        方法一                  return
        方法二                  echo

ユーザーの一覧を照会getuser.shサンプルを書きます

#!/bin/bash

function get_user
{
	users=`cat /etc/passwd | cut -d: -f1`	
	echo $users
}

user_list=`get_user` #将函数变成结果集使用

for u in $user_list
do
	echo $u
done

結果

~$ ./getuser.sh 
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
sshd
.....

ローカルおよびグローバル変数

特に指定しない限り、変数のシェルは、グローバル変数は、それが大規模なスクリプト機能、注意してグローバル変数で推奨されています

ローカル変数を定義します。

定义局部变量时,使用local关键字
函数内和外部若存在同名变量,则函数内部变量覆盖外部变量

書類の作成の例test.sh

#!/bin/bash

var1="Hello World"

function test
{
	local var1=87
	echo $var1
}

test
echo $var1

結果

~$ ./test.sh 
87
Hello World

 

ライブラリ:

ライブラリーの定義は、以下の機能を実現するためのライブラリ:

使用

あなたは、さまざまな機能が含まれているmyfunction.shを作成している場合

あなたが直接myfunction.shを使用することができたときに我々が使用することを

#!/bin/bash

. myfunction

# 可以直接使用 myfunction.sh 中的函数

経験の声

1.ライブラリファイル拡張子は任意であるが、一般的に.lib使用します

2.ライブラリファイルは通常、オプションが実装されていません

3.単にスクリプトで参照と同じレベルのディレクトリにライブラリファイルとスクリプトを、指定する必要はありません

前記第1のラインは、一般的に#を使用さ!/ビン/エコーは、警告メッセージを出力し、ユーザが実行を避けます

 

公開された25元の記事 ウォン称賛13 ビュー10000 +

おすすめ

転載: blog.csdn.net/ChaoLi_Chen/article/details/103195342