関数名 () {
[コマンド]
}
引数は $1 〜 $9 が利用できる。この引数はシェルスクリプト全体の定位置パラメータとは無関係で、シェル関数に与えられたローカルな変数。
戻り値は return で指定可能。return を書かなかった場合には最後に実行したコマンドの戻り値を返す。
#!/bin/sh
sum () {
echo `expr $1 + $2`
}
sum 2 3
<<EOT から EOT までの行を入力として取り込む (EOT のところはなんでもよい)。
<<'EOT' とすると変数が展開されない。
#!/bin/sh
cat <<EOT
line 1
line 2
line 3
EOT
read 変数を使って 1 行ずつ読み取らせることもできる。
#!/bin/sh
while read id ; do
echo "id = $id"
done <<EOT
id1
id2
EOT
指定したシグナルが発生したときにコマンドを実行する。
trap [コマンド] [シグナル]
値 | 名称 | 意味 |
1 | HUP | ハングアップ |
2 | INT | 割り込み (Ctrl + C) |
3 | QUIT | プログラムの実行を中止 |
9 | KILL | プログラムの強制終了 |
15 | TERM | プログラムの終了 |
以下のスクリプトは途中で Ctrl + C を押すと stopped と表示されてスクリプトが終了する。
#!/bin/sh
trap "echo stopped; exit" INT
echo start
sleep 10
echo end