私はいつも彼らが何のために使われているのだろうと思っていましたか?中に何も入れられないのなら、毎回入れるのはばかげているようです。
function_name () {
#statements
}
また、関数の先頭にfunction
キーワードを置くことで得たり失ったりするものはありますか?
function function_name () {
#statements
}
キーワードfunction
は非推奨になり、移植性のためにfunction_name()
が採用されました POSIX仕様
関数は、新しい位置パラメーターを使用して複合コマンドを呼び出すための単純なコマンドとして使用されるユーザー定義の名前です。関数は「関数定義コマンド」で定義されます。
関数定義コマンドの形式は次のとおりです。
fname() compound-command[io-redirect ...]
{ }
は必須ではないため、キーワードfunction
を使用しない場合(使用しない場合)は、()
が必要であるため、パーサーはあなたを認識します。関数を再定義します。
たとえば、これは正当な関数の定義と呼び出しです。
$ myfunc() for arg; do echo "$arg"; done; myfunc foo bar
foo
bar
最初の例では、bashがそれが関数定義であることを認識できるように、空の括弧が必要です(そうでない場合は、通常のコマンドのように見えます)。 2番目の例では、function
を使用したため、()
はオプションです。
function
がないと、エイリアスの展開は定義時に発生します。例えば。:
alias a=b
# Gets expanded to "b() { echo c; }" :
a() { echo c; }
b
# => c
# Gets expanded to b:
a
# => c
ただし、function
を使用すると、定義時にエイリアスの展開が行われないため、エイリアスは定義を「非表示」にします。
alias a=b
function a { echo c; }
b
# => command not found
# Gets expanded to b:
a
# => command not found
unalias a
a
# => c