コマンドが引数を提供しないことを確認するには?

コマンドが引数を提供しないことを確認するには?

空であることを確認する方法は$*?つまり、コマンドに引数が指定されていないことをどのように確認できますか?

ベストアンサー1

コマンドに引数が指定されていないことを確認するには、$#変数の値を確認してください。

if [ $# -eq 0 ]; then
    >&2 echo "No arguments provided"
    exit 1
fi

$*好まない) 次に、

if [ "$*" == "" ]; then
    >&2 echo "No arguments provided"
    exit 1
fi

いくつかの説明:

2番目のアプローチは、位置パラメータ拡張から*拡張が1から位置パラメータまで開始されるため、推奨されません。二重引用符内で拡張が発生すると、IFS特殊変数の最初の文字で区切られた各引数の値を使用して単一の単語に展開されます。これは文字列が構成されることを意味します。したがって、追加のオーバーヘッドが発生します。

一方、#位置パラメータの数まで拡張されます。

例:

$ command param1 param2

ここでは、

IFS が設定されていない場合、値は$#2 で、値は$*文字列 "param1 param2" (引用符を除く) です。 IFSが設定されていない場合、パラメーターはスペースで区切られているためです。

詳しくは、man bash次のタイトルの記事をご覧ください。特殊パラメータ

おすすめ記事