以下を検討してください。
$ ksh -c '1(){ echo hi;};1'
ksh: 1: invalid function name
$ dash -c '1(){ echo hi;};1'
dash: 1: Syntax error: Bad function name
$ bash -c '1(){ echo hi;};1'
bash: `1': not a valid identifier
bash: 1: command not found
$ mksh -c '1(){ echo hi;};1'
hi
基本的に、私は関数を宣言しようとしていた1
と0
されことのための速記だろうtrue
とfalse
、しかし、あなたが見ることができるように私は関数で、数値の名前を使用して問題に遭遇しました。エイリアスと2桁の名前でも同じ動作が発生します。
質問は「なぜ」ですか?それはPOSIXによって義務付けられていますか?それとも、ボーンのような貝殻の奇妙なことですか?
これに関連する質問も参照してください。
0
あるtrue
シェルスクリプトにして1
さfalse
(実際に、任意の非ゼロがfalseとして扱われる)、場合にはこれを読んで、誰もが認識していません。これは、他のほとんどのプログラミング言語とは逆です。