FC2ブログ

シェルスクリプトでのユーザ関数

シェルスクリプトでのユーザ関数

#18 関数を使ってみよう
http://dotinstall.com/lessons/basic_shellscript/10618
を参考に
シェルスクリプトでのユーザ関数について学習

シェルスクリプトでのユーザ関数の作成は

function 関数名(){
行いたい処理
}

そして呼び出すときには
関数名
だけでOK

もし
function hello(){
#行いたい処理
}
なら

関数呼び出しは
hello
となる

実際にやってみると
vim myfunc.sh
内容は
#!/bin/bash
function hello(){
echo "hello shell script"
}
hello

として保存

chmod +x myfunc.sh
,/myfunc.sh
とすると
hello shell script
と表示される

ちなみに、
function は省略可能

シェルスクリプトでの関数の引数は
コマンドと同じように $1 $2 というように引数の数に$をつけて指定する

そして、引数を指定するときには
ユーザ関数の横にスペースで区切って
引数を記述する

例えば
!/bin/bash
function hello(){
echo "friends name $1 $2"
}
hello Mike Tom

これを実行すると
friends name Mike Tom
となる


そして、他のプログラム言語とちがうのが
変数の有効範囲
PHP Java Script C++ などでは
基本的に関数のスコープのそとにかいたものが
グローバル変数
スコープの中に書いたものがローカル変数となる

しかし、シェルスクリプトの場合
ローカル変数であると宣言する
local を変数の前につけないと
グローバル変数扱いになるので注意

まず、local なしの場合

#!/bin/bash
function hello(){
echo "hello shell script"
echo "friends name $1 $2"
i=5
echo $i
}
hello Mike Tom
echo $i

これだと、実行すると
hello shell script
friends name Mike Tom
5
5
となり、$i に関数の外からアクセスできているので
表示されている

次は、local 宣言した場合
#!/bin/bash
function hello(){
echo "hello shell script"
echo "friends name $1 $2"
local i=5
echo $i
}
hello Mike Tom
echo $i

これで実行すると
hello shell script
friends name Mike Tom
5

となり、関数の外からアクセスできなくなっているのが
わかる
ちょっとした違いに見えるけど
間違えると予期せぬ動きに悩まされるので注意
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック