シェル関数に少ない引数を渡すとどうなりますか?

シェル関数に少ない引数を渡すとどうなりますか?

関数にパラメータを渡すことについて質問したいと思います。私はこれを試しました:

function_name $var1 $var2

しかし、一般的に(時には印刷エラーが発生した場合)、合格するかどうかには違いはありません。ただ呼び出すと完璧に動作することを意味しますfunction_name。だから私の質問は:上記の例のようにこれらのパラメータを提供する必要がありますか?

ベストアンサー1

Cにはプロトタイプがないため、Bashは関数に渡された引数の数を確認しません。https://www.gnu.org/software/bash/manual/bash.html#Shell-Functions:

シェル関数は、グループの単一名を使用して後で実行できるようにコマンドをグループ化する方法です。これは「一般」コマンドのように実行されます。シェル関数の名前を単純なコマンド名として使用すると、その関数名に関連付けられたコマンドのリストが実行されます。シェル機能は現在シェルのコンテキストで実行され、それを解釈するための新しいプロセスは作成されません。

関数を宣言するには、次の構文を使用します。

name() 複合コマンド [リダイレクト]

または

関数名[()] 複合命令 [リダイレクト]

1つのアプローチは、関数内の複数のパラメータが正しいことを確認し、そうでない場合はエラーを返すことです。しかし、これはBashの責任ではありません。望むより:

#!/bin/bash

function f()
{
    echo $1
}

function f1
{
    echo $1
}

f
f 2
f1
f1 f1

おすすめ記事