引数全てを表す$@と$*の違いと問題
$@
と$*
は引数全てを表示します。違いはこの2つの変数をダブルクォートで囲んだ際です。$@
は複数要素に別れますが、$*
は1つの文字列となります。
"$@"
"$1" "$2" "$3"
"$*"
"$1 $2 $3"
これはif
でtest
をする時に困ります。$@
で引数が0だと空文字列ではなく、何もないことになります。そういう時は、$*
を使いましょう。
function asterisk_if() {
if [ "$@" != "" ]; then
echo "$@"
else
echo asterisk empty
fi
}