有人可以解释为什么这些echo
命令不会输出[#10]
等等吗?
# echo [#10]
1
# echo [#11]
1
# echo [#12]
1 2
# echo [#13]
1
# echo [#14]
1
答案 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
...