set
setコマンドは、シェルスクリプト内で使用すると、位置パラメータをセットしなおします。
以下のような内容のシェルがあるとします。

#!/usr/bin/bash
set test1 test2
echo $1
echo $2
echo $3
このシェルを以下のように引数を与えて実行します。

a.ksh a b c
シェル実行時には位置パラメータはa,b,cがセットされていますが、シェル内のsetコマンドで一パラメータをセットされなおされているため実行結果は以下のようになります。

test1
test2
$#は動的に変更される
以下のソースを見てください。

#!/usr/bin/bash

echo $1
echo $2
echo $3
echo $4
echo "sum:"$#

set a b c
echo $1
echo $2
echo $3
echo $4
echo "sum:"$#
これはsetコマンドを使用してスクリプト内で引数を変更しています。
この時、引数の数を格納する$#の内容も変更されます。
また、上記スクリプトは題4引数がセットされていませんが、この場合、題4引数には何もセットされませんので注意してください。

Back to top

Information