English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell パラメータの渡し方

Shellスクリプトを実行する際に、スクリプトに引数を渡すことができます。スクリプト内で引数を取得する形式は以下の通りです:$nn 数字を表します。1 実行するスクリプトの第1引数として、2 実行するスクリプトの第2引数として、これは続きと同じです……

オンラインサンプル

以下の例では、スクリプトに3つの引数を渡し、それぞれ出力します。その中で $0 実行するファイル名(ファイルパスを含む):

#!/bin/bash
# author:基本教程
# url:ja.oldtoolbag.com
echo "Shell 引数の渡し方サンプル!";
echo "実行するファイル名:$0";
echo "最初の引数:$"1";
echo "第2引数は:$"2";
echo "第3引数は:$"3";

スクリプトに実行権を設定し、スクリプトを実行し、以下の結果を出力します:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 引数の渡し方サンプル!
実行するファイル名:./test.sh
最初の引数:1
第2引数は:2
第3引数は:3

また、パラメータを処理するためのいくつかの特殊文字があります:

パラメータ処理説明
$#スクリプトに渡された引数の数
$*すべてのスクリプトに渡された引数を一つの文字列で表示します。
「$"*「」で括られた場合、"$"1 $2 すべての引数を「… $n」の形式で出力します。
$$スクリプトが実行している現在のプロセスID番号
$!バックグラウンドで動作している最後のプロセスのID番号
$@与$*同じですが、使用時に引数を追加し、各引数を引数内で返します。
「"」で括られた場合、"$@"と同じですが、使用時に引数を追加し、各引数を引数内で返します。1" "$2" … "$n" の形式ですべての引数を出力します。
$-Shellが使用する現在のオプションを表示し、setコマンド機能が同じです。
$?最後のコマンドの終了ステータスを表示します。0はエラーが無いことを示し、他の値はエラーを示します。
#!/bin/bash
# author:基本教程
# url:ja.oldtoolbag.com
echo "Shell 引数の渡し方サンプル!";
echo "最初の引数:$"1";
echo "引数の数:$#";
echo "渡された引数を文字列として表示します:$"*";

スクリプトを実行し、以下の結果を出力します:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 引数の渡し方サンプル!
最初の引数:1
引数の数:3
渡された引数を文字列として表示します:1 2 3

$* 与 $@ 区別:

  • 同じ点:すべての引数を参照します。

  • 違い:ダブルクォート内で現れます。スクリプトの実行時に3つの引数が書かれた場合、 1、2、3、 * " に等価です。1 2 3"(1つの引数が渡されました),"@" は "1" "2" "3"(3つの引数が渡されました)。

#!/bin/bash
# author:基本教程
# url:ja.oldtoolbag.com
echo "-- \$* デモ ---"
for i in "$"*"; do
    echo $i
完了
echo "-- \$@ デモ ---"
for i in "$@"; do
    echo $i
完了

スクリプトを実行し、以下の結果を出力します:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* デモ ---
1 2 3
-- $@ デモ ---
1
2
3