パラメータを渡すシェル


シェルスクリプトの実行時にスクリプトにパラメータを渡すことができます。スクリプト内でパラメータを取得する形式は、$nです。 n は数値を表し、1 はスクリプトを実行する最初のパラメータ、2 はスクリプトを実行する 2 番目のパラメータ、というように続きます...

次の例では、スクリプトに 3 つのパラメータを渡します$0 は実行するファイル名です:

#!/bin/bash
# author:php中文网
# url:www.php.cn

echo "Shell 传递参数实例!";
echo "执行的文件名:
$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
"; echo "第一个参数为:"; echo "第二个参数为:"; echo "第三个参数为:";

スクリプトの実行権限を設定し、スクリプトを実行します。 出力結果は次のとおりです:

#!/bin/bash
# author:php中文网
# url:www.php.cn

echo "Shell 传递参数实例!";
echo "第一个参数为:";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

さらに、いくつかの特殊文字があります。パラメータの処理に使用されます:

パラメータ処理説明
$#スクリプトに渡されるパラメータの数
$* スクリプトに渡されるすべてのパラメータを単一の文字列で表示します。
「$*」を「"」で囲んだ場合は、すべてのパラメータが「$1 $2 ... $n」の形式で出力されます。
$$実行中のスクリプトの現在のプロセスID番号
$!バックグラウンドで実行されている最後のプロセスのID番号
$@$*と同じ、ただし、 quotes を使用し、各パラメータを引用符で囲んで返します。
例えば、「$@」を「"」で囲んだ場合、すべてのパラメータが「$1」「$2」…「$n」の形式で出力されます。
$- シェルで使用されている現在のオプションを表示します。これは set コマンドと同じ機能を持ちます。
$? 最後のコマンドの終了ステータスを表示します。 0 はエラーがないことを示し、それ以外の値はエラーを示します。
$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

スクリプトを実行すると、出力結果は次のようになります:

#!/bin/bash
# author:php中文网
# url:www.php.cn

echo "-- $* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- $@ 演示 ---"
for i in "$@"; do
    echo $i
done

$* と $@ 相違点:

  • 同一性: どちらもすべてのパラメーターを引用します。

  • 違い: 二重引用符でのみ反映されます。スクリプトの実行時に 3 つのパラメーター 1、2、および 3 が書き込まれたとすると、「 * 」は「1 2 3」 (パラメーターが 1 つ渡される) に相当し、「@」は「1」「2」に相当します。 「 3」 (3 つのパラメータが渡されました)。

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

スクリプトを実行すると、出力結果は次のようになります:

rrreee