$*
シェルスクリプトで正確にはどういう意味ですか?
たとえば、次のコード スニペットを考えてみましょう
$JAVA_HOME/bin/java/com/test/Testclass $*
$*
シェルスクリプトで正確にはどういう意味ですか?
たとえば、次のコード スニペットを考えてみましょう
$JAVA_HOME/bin/java/com/test/Testclass $*
これは、スクリプトまたは関数に渡されたすべての引数を単語ごとに分割したものを意味します。
これは通常間違っており"$@"
、引数を適切に区切る に置き換える必要があります。
自分で答えを見つけるのは簡単です: man bash
→ /\$\*
:
特殊パラメータ
シェルはいくつかのパラメーターを特別に扱います。これらのパラメータは参照のみ可能です。それらへの割り当ては許可されていません。
- 1 から始まる定位置パラメーターに展開されます。
IFS
展開が二重引用符内で発生すると、各パラメーターの値が特殊変数の最初の文字で区切られた単一の単語に展開されます。つまり、"$*"
は と同等 です。"$1c$2c..."
ここ で、 は変数c
の値の最初の文字です。IFS
が設定されていない場合IFS
、パラメータはスペースで区切られます。が null の場合IFS
、パラメーターはセパレーターを介在させずに結合されます。
$*
そのシェル スクリプトに渡されたすべてのパラメータに展開されます。
$0
= シェルスクリプトの名前
$1
= 最初の引数
$2
= 第二引数 ...etc
$#
= シェルスクリプトに渡される引数の数