Bash関数定義の予期しないトークンの近くに構文エラーがあります。

Bash関数定義の予期しないトークンの近くに構文エラーがあります。

申し訳ありません。私はbashファイルなどについて初めて触れました。私の.bashrcのコピーは次のとおりです。

alias k='kate 2>/dev/null 1>&2 & disown'

function kk {kate 2>/dev/null 1>&2 & disown}

1行目のエイリアスは正常に機能しますが、2行目では次のエラーが発生します。

bash: /home/mozershmozer/.bashrc: line 3: syntax error near unexpected token `{kate'
bash: /home/mozershmozer/.bashrc: line 3: `function kk {kate 2>/dev/null >1>&2 & disown}'

私はLinux Mint 17.3を実行しており、これが私の.bashrcファイルにある唯一の2行です。私のコンピュータの他のほとんどすべての項目は基本的にバニラです。結局のところ、私はこの関数を試して特定のタスクを実行したかったのですが、すぐに構文の壁にぶつかりました。ここにリストされている正確な関数は、構文をより明確に学ぶのを助ける実験的なダミー関数です。

ベストアンサー1

完全に特別ではありませんが、他のbashPOSIXシェルでも利用可能{}シンボル彼らは特別ですが性格この文脈で。機能定義から複合コマンドを生成するときは、それらを保存することが重要です。性格つまり、スペースで囲まれています。

このような単一行関数定義の最後のコマンドは、セミコロンで終わる必要があります。それ以外の場合は、クローズ中括弧がコマンド}の引数として扱われます。


記述子として、もし関数を別のPOSIXシェルに移植するには、別の関数構文を使用することをお勧めします。

kk () { kate 2>/dev/null 1>&2 & disown; }

の使用はfunctionのみに適用されますbashが、ここで提供される形式はbashsh、Korn、およびAlmquistシェルなどの他のシェルに適用されます。

disownまた、bashによって異なります。

おすすめ記事