bash 関数が与えられた場合:
function f1 {
echo "The function f1 is being called with ??? argument(s)."
}
そして2つの呼び出し:
f1 arg1
f1 arg1 arg2
渡された引数の数を取得するにはどうすればよいですか? 望ましい出力:
The function f1 is being called with 1 argument(s).
The function f1 is being called with 2 argument(s).
答え1
使用できます
$#
man bash
その他のBashのヒントについてはこちらをご覧ください
答え2
特別な引数を使用する
$#
これは、シェルのこの呼び出しに与えられた位置引数の数を返します。
からman bash
...
$1 - $9 これらの変数は位置パラメータです。
$0 現在実行中のコマンドの名前。
$# シェルのこの呼び出しに与えられた位置引数の数。
$? 最後に実行されたコマンドの終了ステータスが 10 進文字列として返されます。コマンドが正常に完了すると、終了ステータス 0 (ゼロ) が返され、それ以外の場合は 0 以外の終了ステータスが返されます。
$$ このシェルのプロセス番号 - ファイル名に含めて一意にするのに役立ちます。
$! バックグラウンドで最後に実行されたコマンドのプロセス ID。
$- このシェルの呼び出しに指定された現在のオプション。
$* $1 から始まる、シェルへのすべての引数を含む文字列。
$@ 引用符で囲まれている場合を除き、上記と同じです。
これらの特別な引数は、現在のシェルに関するデータを収集するのに非常に役立ちます。