为什么“echo [#10]”等于1?

时间:2013-12-19 18:01:54

标签: linux bash ubuntu centos

有人可以解释为什么这些echo命令不会输出[#10]等等吗?

# echo [#10]
1
# echo [#11]
1
# echo [#12]
1 2
# echo [#13]
1
# echo [#14]
1

2 个答案:

答案 0 :(得分:3)

您的当前目录中有一个名为“1”的文件和一个名为“2”的文件。

在将结果传递给echo之前,shell正在对glob模式执行模式匹配。 [#10]是一个包含 1 0 的字符类。

请参阅http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching

如果你想要文字[#10]等,你必须将它括在引号中,单个或双重无关紧要。

答案 1 :(得分:2)

(回答你上次评论中的问题)

您可以使用printf(1)命令:

 printf "Error: %s went wrong. Error code [#%d]\n" "something" $[10+2]

$[10+2]在这里展示如何在shell中进行算术运算。您可以将"something"替换为例如$somevariable ...