目次 このページのソースコードを表示

パラメータ

公開日:
更新日:

シェル上ではシェル変数によって変数を扱えます. さらにシェル変数以外に, 位置パラメータ特殊パラメータと呼ばれる, 一種の変数が存在する[1]. シェル変数, 位置パラメータ, 特殊パラメータをまとめてパラメータといいます[1].

位置パラメータ

$1, $2, $3, …

シェルスクリプトやシェル関数の引数を参照する.

paramtest
                #!/bin/sh
                
                echo "$1"
                echo "$2"
                echo "$3"
位置パラメータの表示テスト
                $ ./paramtest one two three
                one
                two
                three
動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

特殊パラメータ

$0

起動されたシェルスクリプト名(第0引数)を参照する.

            echo "$0" # シェルスクリプト名(第0引数)を表示する
動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$@

シェルスクリプトやシャル関数の引数をそのまま引き継ぐ.

            mycommand "$@"  # 引数すべてをそのまま引き継いでmycommandを起動
動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$*

シェルスクリプトやシェル関数の引数すべてを1つに連結して参照する.

            echo "$*"  # すべての引数を1つに連結して表示する
動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$#

シャルスクリプトやシェル関数の引数の個数を参照する.

動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$?

直前のリストの終了ステータスを参照する.

動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$!

もっとも新しくバックグラウンドで起動したコマンドのプロセスIDを参照する.

            sleep 10 & # 適当なコマンドをバックグラウンドで起動
            echo $!    # そのコマンドのプロセスIDを表示する
動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$$

シェル自身のプロセスIDを参照する.

動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$-

現在のシェルに設定されているオプションフラグを参照する.

動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

$_

直前に実行したコマンドの最後の引数を参照する.

            ls -l /some/dir
            cd $_           # /some/dirディレクトリに移動
動作対応状況
Linux (bash)
FreeBSD (sh)
Solaris (sh)
BusyBox (sh)

Internal Variables[2]

PPID

現プロセスの親プロセスのプロセスID

親プロセスが先に死ぬと子プロセスはinitプロセスの養子になるというのはunixの仕様です[3]. つまり, 親が先に死ぬと, その子プロセスの$PPIDは, 1になります(initプロセスIDは1[4]).

参考文献

  1. ^ a b 山森丈範. [改訂第3版]シェルスクリプト基本リファレンス. 2017
  2. ^ "9.1. Internal Variables". Advanced Bash-Scripting Guide. accessed 2020-5-20
  3. ^ "親プロセスが終了するとそのプロセスから呼ばれた子プロセスも停止する?". ZDNet. accessed 2020-5-20
  4. ^ "Init". Wikipedia. accessed 2020-05-20
「https://contentsviewer.work/Master/ShellScript/parameter/parameter」から取得