MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
シェルスクリプトの基礎 - 関数のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
シェルスクリプトの基礎 - 関数
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == 関数の基本 == ==== 関数の定義 ==== 以下のいずれかの構文を利用して、関数を定義することができる。<br> <syntaxhighlight lang="sh"> function funcname { <shell commands...> } または function funcname() { <shell commands...> } </syntaxhighlight> <br> ==== 関数の削除 ==== 定義されている関数を削除するには、以下のコマンドを実行する。<br> unset -f funcname <br> 現在のログインセッションにおいて、どのような関数が定義されているかを確認するには、以下のコマンドを実行する。<br> declare -F # 関数名のみ出力 declare -f # 関数の定義も出力 <br> ==== 関数と環境変数 ==== シェルスクリプトの関数は、実行したシェルと同じプロセスで実行される。<br> したがって、以下のように、関数内で環境変数を設定した場合、関数を呼び出したシェルにも反映される。<br> <syntaxhighlight lang="sh"> function myfunc() { export AAA=100 } </syntaxhighlight> <br> ==== 関数の定義の注意点 ==== 関数の内容が無い場合、シンタックスエラーが出力される。<br> <syntaxhighlight lang="sh"> myfunc() { } # 出力 ./Sample.sh: 行 3: 予期しないトークン `}' 周辺に構文エラーがあります ./Sample.sh: 行 3: `}' </syntaxhighlight> <br><br> == 関数にパラメータを渡す == 関数に渡されたパラメータの処理方法は、シェルスクリプト実行時に渡されたコマンドラインパラメータの処理方法と同じである。<br> <br> ==== 関数へ渡されたパラメータの数を調べる($#) ==== 関数内で$#を参照する場合、渡されたパラメータの数を調べることができる。<br> また、関数の外で$#を参照する場合、シェルスクリプト実行時に渡されたコマンドラインパラメータの数を取得できる。<br> <syntaxhighlight lang="sh"> function SampleFunc() { echo $# } # 出力 SampleFunc 100 200 2 SampleFunc aaa bbb ccc 3 SampleFunc "This is a pen" 1 </syntaxhighlight> <br> 以下の例では、関数へ渡されたパラメータが少なくとも1つ以上あるか確認している。<br> <syntaxhighlight lang="sh"> function SampleFunc() { if [ $# -lt 1 ]; then echo 'Function "foo" needs at least one parameter' >&2 exit -1 fi echo 'OK' } </syntaxhighlight> <br> 以下の例では、<code>shift</code>コマンドを使用して、関数へ渡されたパラメータを順番に処理している。<br> <syntaxhighlight lang="sh"> function SampleFunc() { while [ -n "$1" ] do echo $1 shift done } # 出力 SampleFunc 1 2 3 1 2 3 </syntaxhighlight> <br> また、パラメータをシングルクォーテーションあるいはダブルクォーテーションで括ると、1つのパラメータとして処理される。<br> # 出力 SampleFunc "1 2 3" 1 2 3 <br> ==== 関数のデフォルトパラメータの定義 ==== パラメータの参照において、<code>${1:-デフォルト値}</code>という形で参照すると、<br> 1つ目のパラメータが指定されなかった場合、デフォルト値を使用することができる。<br> (これは、シェルスクリプトのコマンドラインパラメータの扱いと同様である)<br> <syntaxhighlight lang="sh"> function SampleFunc() { name=${1:-everyone} echo "Hello $name" } # 出力 SampleFunc Hello everyone SampleFunc Maku Hello Maku </syntaxhighlight> <br><br> == 関数のローカル変数 == シェルスクリプトは、関数の内部と関数の外部で変数を共有する。<br> 以下のように、関数内で代入を行う場合、関数外で代入した値が上書きされる。<br> <syntaxhighlight lang="sh"> function SampleFunc() { A=200 } # 出力 A=100 SampleFunc echo $A 200 # 変数Aの値が上書きされる </syntaxhighlight> <br> 関数の内部のみ有効な変数を宣言する場合、localキーワードを付加する。<br> <syntaxhighlight lang="sh"> function SampleFunc() { local A=200 } # 出力 A=100 SampleFunc echo $A 100 # 変数Aの値は変化しない </syntaxhighlight> <br> 以下の例では、ローカル変数にデフォルト引数を定義している。<br> <syntaxhighlight lang="sh"> function SampleFunc() { local A=${1:-ABC}; echo "param = $A" } # 出力 SampleFunc param = ABC SampleFunc 10000 param = 10000 </syntaxhighlight> <br><br> == 関数の戻り値 == 関数の戻り値において、returnで返すことのできる値は数値(0~255)のみである。<br> returnで返された戻り値を参照する場合、$?を参照する。<br> <syntaxhighlight lang="sh"> function SampleFunc() { return 1 } # 出力 SampleFunc echo $? </syntaxhighlight> <br> 関数の実行結果を文字列として受け取る場合、関数の内部でechoした文字列をバッククォートを括った関数を実行して取得する。<br> <syntaxhighlight lang="sh"> function SampleFunc { echo 'hoge' } # 出力 val=`SampleFunc` または val=$(SampleFunc) echo $val hoge </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:シェルスクリプト]]
シェルスクリプトの基礎 - 関数
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse