定義フォーマットシェル関数は、次のとおりです。
[ 機能] funname [()]
{
作用;
【リターンINT ;]
}
説明:
- 図1は、楽しいと缶機能()が定義され、パラメータなしで()が定義され、直接楽しみであってもよいです。
- 2、リターン・パラメータが追加を表示することができます:リターンが返されない場合は、戻り値として、そのコマンドの結果を持続します。N個の戻り値(0〜255が続きます
例えば:
関数パラメータなし:
demoFunc(){#定義関数
エコー 「これは、シェルの第一機能である」
}
エコー 「-------機能開始------ 」
機能#1のdemoFunc実行
エコー 」-------機能が完了------ 」
結果の実装:
$ SH testFunc。SH
------- ------機能が起動し
、これは最初の1シェル機能である
------- ------機能が完了
得られる$?を通して関数を呼び出した後、関数の戻り値。
注:すべての機能は、使用する前に定義する必要があります。機能は、それが最初に発見された際に通訳シェルまで、スクリプトの先頭に配置する必要があることをこの意味では、それを使用することができます。唯一その関数名を使用して関数を呼び出します。
複数の戻り値を持つ関数:
試験(){
エコー 100の#戻り100
エコー 200 #リターン200である
}
A = $(テスト)
エコー $ A
結果の実装:
SH testfunc。SH
100 200
パラメータを持つ関数:
funWithParam(){
エコー " 最初のパラメータ。1 $!"
エコー " 2番目のパラメータは2 $である!"
}
funWithParam 。1 2
結果の実装:
SH testFunc。SH
最初のパラメータは、ある1!
2番目の引数が2!
第十{10} $必要なパラメータを取得し、$ 10 10のパラメータを得ることができないことに留意されたいです。場合N> = 10、パラメータを取得するために$ {N}の使用を必要とします。
また、特殊文字を処理するためのいくつかのパラメータがあります。
パラメータ処理 | 説明 |
---|---|
$# | 引数の数は、スクリプトまたは関数に渡されました |
$ * | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
参考文档: