「echo[0123456789]」が「1」を返すのはなぜですか? [コピー]

「echo[0123456789]」が「1」を返すのはなぜですか? [コピー]

なぜこれが起こるのかを理解するのに役立ちますか?

$ echo [023456789]
[023456789]

$ echo [0123456789]
1

あなたのフィードバックに基づいて、値のパラメータを取り、そのリテラル文字列を変数に割り当てることができるbashスクリプトを作成する方法を見つけたいと思います。

答え1

現在、ディレクトリに「1」というファイルがあります。

echo [0123456789]

名前が単一の数字で構成されている現在のディレクトリのすべてのファイル名を表示するようにbashに指示するワイルドカードコマンド。そのファイルが存在しない場合、echoはワイルドカード仕様自体を表示します。

気づく:

$ mkdir /tmp/new-directory
$ cd /tmp/new-directory
$ echo [0123456789]
[0123456789]

$ touch 1 2 4 8
$ echo [0123456789]
1 2 4 8

一致するファイル名ではなく文字通り文字列を表示するには、文字列を引用符で囲みます。

$ echo "[0123456789]"
[0123456789]

関連情報