2.shellプログラミング - 高度な使い方機能

2.1定義と使用機能

基本的な機能を使用します

【VM_0_9_centos〜@ルート] #のテスト() 
> {}
 - バッシュ:予期しないトークンの近くに構文エラー`{} ' 
[ルート VM_0_9_centos〜@] テスト(){} 
- バッシュ:予期しないトークンの近くに構文エラー` {}' 
[ルート VM_0_9_centos〜] @ #のテスト() 
> {
 >エコー" 試験機能" 
> } 
[ルート VM_0_9_centos〜] @ #のテスト 
テスト機能
[ルート VM_0_9_centos〜@] 機能挨拶 
> {
 >エコー"こんにちは世界" 
> } 
[ルート VM_0_9_centos〜@] 挨拶
のHello World 
[ルート VM_0_9_centos〜@]  

例1:あなたが自動オープンをオフにした場合、デーモン、nginxのを書きます

Vimのnginx_daemon.sh

!/ binに/ bashのの
#の

#のスクリプトIDを実行しているプロセス、スクリプト名は、nginxの言葉を持っている場合、これはまた、フィルタリングする必要が 
this_pid $$ = しばらくtrueに行う
PSの -efを|グレップのnginxの|はgrep -v grepの|はgrep -v $ this_pid&>は/ dev / nullにIF [$?-eq 0 ];その後、
    エコー" !まあnginxのISの実行" 
    SLEEP 3
 
    のnginxが起動しsystemctl 
    エコー" .....、nginxのがダウンしているITを開始します" 
Fiあり
DONE

 



バックグラウンドでこのスクリプトを入れて

nohupをSH nginx_daemon.sh&

ビューを閉じた後

-f nohup.out

2.2。関数に引数を渡します

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

関数
{ 
    エコーこんにちは$ 1 
    エコーこんにちは$ 2 
}

関数呼出し

デレク・アリスに名前を付けます

例えば

[VM_0_9_centosのshell_learn @ルート] #の機能挨拶 
> {
 >エコー" こんにちは$ 1 " 
> } 
[ルート VM_0_9_centosのshell_learn @]   
[VM_0_9_centosのshell_learn @ルート] #のグリーティングデレク
ハローデレク
[ルート VM_0_9_centosのshell_learn @] アリス挨拶
こんにちはアリス
[ルート @ VM_0_9_centosのshell_learn]  

2.3。関数の戻り値

値で返します。

モード:返す

メソッド2を:エコー

値を返すためにリターンを使用

  • 唯一の整数を返すことができ、値を返すためにリターンを使って1〜255
  • 0成功した場合に、1は失敗を示し、関数の戻り値の戻り値を使用することは通常は0または1、通常のみを返し、残りの状態を取得するためにコールに使用されます

エコーの戻り値を使用します

  • 文字列のエコーがどんな結果を返すことができます使用します
  • 一般に、このような文字列値または値のリストとしてデータを返すために使用

例1

!/ binに/ bashの

this_pid = $$ 関数is_nginx_running 
{ 
    のps -ef | grepをするnginxの|はgrep -v grepの| grepの-v $ this_pid&>は/ dev / nullの場合は [$?-eq 0 ];その後、
             戻りそうリターン 1 
    Fiが
} 
is_nginx_running &&エコー" nginxのがrunnigれる.... " || エコーnginxの停止であります!



    
    
        

 例2:ユーザーのリストを取得します。

!/ binに/ bashの
#の

関数GET_USERS 
{ 
    ユーザー = `猫/ etc / passwdファイル| -dカット: - f1` 
    エコー$ユーザー
} 

user_list = `get_users` 

インデックス = 1 のためのユーザーの$ user_listはない
    エコー" $インデックスのユーザーがある:$ユーザ" 
    インデックス = $(($インデックス +1 ))
完了

 

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

グローバル変数

  • 特別声明、シェル変数は、グローバル変数がありません
  • 注意してグローバル変数に大きなスクリプト関数

ローカル変数

  • あなたは、変数を定義すると、ローカルのキーワードを使用します
  • カバレッジ機能の機能内側同じ内側及び外側の関数関数変数、外部変数の存在

2.5。ライブラリ

ライブラリー

  • パッケージファイルの関数として頻繁に使用されるコードを繰り返します
  • 一般的に直接行ったが、他のスクリプトから呼び出されていません
  • サフィックスライブラリファイル名は任意であるが、一般的に.lib使用します
  • ライブラリファイルは、一般的に実行可能な選択肢ではありません
  • 同じディレクトリに、スクリプト内の参照のみをライブラリファイルやスクリプトを指定せず

 

おすすめ

転載: www.cnblogs.com/derek1184405959/p/11099961.html