1. ホーム
  2. bash

[解決済み] bashスクリプトで使われる'function'キーワードとは何ですか?

2023-08-12 10:34:54

質問

例えば Bash-Prog-Intro-HOWTO(バッシュ・プログ・イントロ・ハウツー

関数 foo() {}

で検索クエリを作っています。 info bash を検索し、POSIX の削除された章にある 関数 のキーワードを探しましたが、何も見つかりませんでした。

とは function キーワードは何ですか?これは非推奨の構文なのでしょうか?

どのように解決するのですか?

この function キーワードは、Bashで関数を定義する際にオプションとなります。 マニュアル :

関数はこの構文で宣言されます。

name () compound-command [ redirections ]

または

function name [()] compound-command [ redirections ]

構文の最初の形式は、Bourne/Korn/POSIXスクリプトと互換性があり、より移植性が高いため、一般的に好まれます。

とはいえ、時には function キーワードを使用して、Bash のエイリアス が関数名と衝突するのを防ぎます。この例を考えてみましょう。

$ alias foo="echo hi"
$ foo() { :; }
bash: syntax error near unexpected token `('

ここで 'foo' が同名のエイリアスのテキストに置き換えられているのは、それが 最初の単語 であるため、同名のエイリアスのテキストに置き換えられます。と共に function では、エイリアスは展開されません。

 $ function foo() { :; }