Shell spacing in square brackets
本问题已经有最佳答案,请猛点这里访问。
作为一个初学者,我没有找到任何答案,关于空格(语法)和解析的规则。
例如。
我可以吗
1 2 3 4 | if [$# -eq 2] ; then llll fi |
或者我必须在物体之间总是有一两个空白,比如
1 2 3 4 | if [ $# -eq 2 ] ; then llll fi |
号
第二个相关问题是
1 2 3 4 | if [[ $# -eq 2 ]] ; then wafwaf fi |
我关心的是
没有搜索为我提供了一套规则。
在
1 2 3 4 5 6 | $ help '[' [: [ arg... ] Evaluate conditional expression. This is a synonym for the"test" builtin, but the last argument must be a literal `]', to match the opening `['. |
因为它是一个普通的命令名而不是特殊的字符,所以在
1 2 3 4 | $ [ foo = foo ] && echo true true $ [foo = foo] && echo true [foo: command not found |
号
为了可读性,
1 2 3 4 | $ [ foo = foo] bash: [: missing `]' $ [ foo = 'foo]' bash: [: missing `]' |
有关
- 巴什的[和]有什么区别?