🗯️

シェルスクリプトの基礎⑨~シェル関数~

2021/01/11に公開

はじめに

くーばねてすをやっつけるためにLinuxさんと仲良くさせていただいているが、Linuxさんにはシェルのコマンドを格納しておくシェルスクリプトというファイルがあるらしいのでそれをまとめてみた。

概要

■シェル関数とは
■シェル関数内での位置パラメータ
■シェル関数の終了ステータス

をまとめた^^

■シェル関数とは

シェルスクリプトを関数化したもの。
同じ処理を何度も何度も行うときなどに短縮する為に使われる。
また複雑なシェルスクリプトを作るときに機能ごとに関数を用意しておくことでシェルスクリプトを見やすくするなどの使い方がある。
シェル関数は次のように定義する

シェル関数の定義
function 関数名 ()
{
	処理
}
関数名

functionと()はどちらか省略することができる!(^^)

関数名 ()
{
	処理
}
関数名
function 関数名
{
	処理
}
関数名
$cat datetime.sh
#! /bin/bash
datetime ()
{
	date                     (シェルスクリプトを関数に定義する) 
	du -h ~ | tail -n 1
}
datetime

$ source ./datetime.sh        (でた!)
Mon Jan 11 09:53:20 UTC 2021
236K    /root

■シェル関数内での位置パラメータ

シェル関数内でも位置パラメータが参照することができる!

位置パラメータテスト
$ cat functest.sh
#! /bin/bash
functest ()
{
	echo  "1=$1"
	echo  "2=$2"
	echo  "3=$3"
}

functest aaa bbb ccc 

$ ./functest.sh
1=aaa
2=bbb
3=ccc

コマンドライン引数で指定しなくてもシェル関数から位置パラメータが参照できた!(^^)
ただし$0だけはコマンドラインの方を参照するので気をつけよう。

■シェル関数の終了ステータス

シェル関数を終了させたいときは

return 終了ステータス

と記述する。

コマンドラインに引数がない場合は終了せよ
$ cat test5.sh
#! /bin/bash
test ()
{
	if [ -z "$1" ];then
		return 100
	fi
}
test

$ ./test5.sh
$ $?
-bash: 100: command not found

できた!(^^)

まとめ

関数名のあとの()の存在意味(>_<)
何か深い訳があるのだろうか

Discussion