
誤ってBash端末に次のコマンドを入力しました。
exit()
Bashは文字列リテラルを入力するまで次の行を読み続け、Bashは「-bash:予期しないトークン付近の構文エラー」というエラーを表示します。
そのため、次のような他の同様の入力をテストしました。
foobar ()
Bashは同様の出力を提供します。私が得た結果は次のとおりです。
~ $ foo ()
> bar
-bash: syntax error near unexpected token `bar'
誰かが理由を説明できますか?私は括弧が配列またはサブシェルを作成するために使用されることだけを知っています。私はこれが実際に何をしているのか分からない。
答え1
これはシェル関数を定義する構文です。よりシェル機能部分バッシュマニュアル。それは次から始まります:
シェル関数は、グループの単一名を使用して後で実行できるようにコマンドをグループ化する方法です。これは「一般」コマンドのように実行されます。シェル関数の名前を単純なコマンド名として使用すると、その関数名に関連付けられたコマンドのリストが実行されます。シェル機能は現在シェルのコンテキストで実行され、それを解釈するための新しいプロセスは作成されません。
関数を宣言するには、次の構文を使用します。
name () compound-command [ redirections ]
複合コマンドを入力する必要があります。たとえば、
$ foo()
> {
> echo 'you said foo'
> }
$ foo
you said foo