wada811 / blog

wada811's blog
https://github.com/wada811/blog/issues
Apache License 2.0
6 stars 0 forks source link

位置パラメータとシェルによって設定されるパラメータ #25

Open wada811 opened 5 years ago

wada811 commented 5 years ago

What

シェルには位置パラメータとシェルによって設定されるパラメータがある。

変数 概要
$0 シェルスクリプトのファイル名
$# シェル引数の数
$n n番目のシェル引数の値
$* すべてのシェル引数のリスト("$*""$1 $2 ... $n" となる)
$@ すべてのシェル引数のリスト("$@""$1" "$2" ... "$n" となる)
$- シェルに設定されているオプション(set, setopt や shebang で指定したもの)
$$ 現在のシェルのプロセスID
$! バッググラウンドで最後に実行されたコマンドのプロセスID
$? 最後に実行されたコマンドの終了ステータス(通常は成功時に0を返す)

How

確認用コードは以下の通り。

parameters.sh

#!/usr/local/bin/zsh -eu
echo "\$0:" $0
echo "\$#:" $#
for index in `seq 1 $#`; do
    echo " \$$index:" $@[$index]
done
echo "\$*:" "$*"
for arg in "$*"; do
    echo ' "$*":' $arg
done
echo "\$@:" "$@"
for arg in "$@"; do
    echo ' "$@":' $arg
done
echo "\$-:" $-
echo "\$\$:" $$
echo "\$!:" $!
echo "\$?:" $?

% ./parameters.sh a b c

$0: ./parameters.sh
$#: 3
 $1: a
 $2: b
 $3: c
$*: a b c
 "$*": a b c
$@: a b c
 "$@": a
 "$@": b
 "$@": c
$-: 569Xeu
$$: 9700
$!: 0
$?: 0

Ref