请解释为什么最后四个echo语句显示1 4 5 6?我曾经无意中碰到了这个,但是现在我很好奇为什么会发生这种行为。
这些语句按预期工作(对我而言)。
$ echo [ 9876543210 ]
[ 9876543210 ]
$ echo [237890]
[237890]
这些echo语句始终显示1 4 5 6.这些数字是否有特殊之处?
$ echo [9876543210]
1 4 5 6
$ echo [abcd9876543210ghi]
1 4 5 6
$ echo [-123456-]
1 4 5 6
$ echo [-7654321-]
1 4 5 6
谢谢!
rm
命令的角度来看,可能的重复项。这个问题是从echo
命令的感知“怪异行为”的角度出发的。两者的根本答案都是混乱。有人用echo
命令搜索问题不会轻易找到rm
问题,而是更有可能落在这里。右括号[
是外壳的特殊字符。它打开了一个模式匹配算法,该算法表示“匹配括号内的任何字符”。因为在当前目录中有4个文件分别名为:1、4、5和6,所以当方括号内的字符包含这些数字中的任何数字时,您的shell会用这些文件名替换模式匹配。当你改用echo [ 9876543210 ]
您所呼叫的回声与3个参数:[
,9876543210
,和]
。
您应该引用您的echo语句的参数,以防止外壳程序将其视为模式匹配请求。
$ echo '[9876543210]'
[9876543210]
(或删除名为1、4、5和6的文件-但这是演示行为的一种解决方法,而不是解决方法)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句