On Wed, Jul 27, 2016 at 2:28 PM, Lingfei Kong <466701...@qq.com> wrote:
> Another reproducer: > > # c='[1][1][1]' > # touch 111 > # echo $c > 111 > # rm 111 > # echo $c > [1][1][1] > > ------------------ Original ------------------ > *From: * "Lingfei Kong";<466701...@qq.com>; > *Date: * Wed, Jul 27, 2016 07:24 PM > *To: * "bug-bash"<bug-bash@gnu.org>; > *Subject: * echo builtin command will give the wrong value of the > variable when there is a file named: 11 in the current directory > > *Description:* > > echo builtin command will give the wrong value of the variable when there is > a file named: 11 in the current directory. > > > *Version:* > > GNU bash, version 4.2.45(1)-release-by_tst_tlinux20_v1004 > (x86_64-unknown-linux-gnu) > > GNU bash, version 4.1.2(1)-release-by_mupan_tlinux_v1004 > (x86_64-unknown-linux-gnu) > > GNU bash, version 3.2.48(1)-release-by_tst_suse_31_v1004 > (x86_64-unknown-linux-gnu) > > > *How reproducible:* > > 100% > > > *Steps to Reproduce:* > > # touch 11 > # c='[11761][1469504252]' > > *# echo $c 11* > # rm 11 > # echo $c > [11761][1469504252] > > *Expected results:* > > # touch 11 > # c='[11761][1469504252]' > > *# echo $c **[11761][1469504252]* > > > > Best Regards > > Lingfei > > It's acutally a feature, juste like "echo *" will print the list of filenames matching * "echo [a-z]*" will print the list of filenames starting with a letter between a and z. [] defines a range of character like in almost every regular expression. In your case you can disable matching the filenames by quoting your expansion: echo "$c".