パラメータを渡すシェル
シェルスクリプトの実行時にスクリプトにパラメータを渡すことができます。スクリプト内でパラメータを取得する形式は、$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