1.单括号与括号共同构成理论TEST命令偠对变量进行单词分离当变量值包含空白符时,要用引号将变量括起来;而双括号与括号共同构成理论的TEST命令不会对变量进行单词分离
以下情况分为变量为单个单词,含有空格的词组
得出结论,因为变量只有一个单词嘛单双括号与括号共同构成理论的单词分离都没囿影响到这个变量了。
这次变量是一个词组了带空格那种了。当我们要测试时结果发现BASH回应参数太多了,这是怎么回事呢原来是单引号TEST命令对变量进行单词分离了,结果也就变成了
world之间的比较了因此如果在单括号与括号共同构成理论的TEST命令中的变量含有空格,但它還得和字符串比较那就必须给变量加个双引号了,这时它就不会发生错误了而在下面的双括号与括号共同构成理论的TEST命令中,即使变量含有空格又何妨因为它不能对变量单词进行分离嘛。
2.单方括号与括号共同构成理论的TEST命令通常用内置的TEST命令来测试表达式的值,TEST命令也被链接到方括号与括号共同构成理论上这样,既可以使用单独的TEST命令也可以通过把表达式用单方括号与括号共同构成理论括起來,来测试表达式的值
3.单括号与括号共同构成理论的TEST命令不对SHELL元字符进行扩展的,而双括号与括号共同构成理论TEST命令则会对SHELL元字符进行擴展的了
4.在双括号与括号共同构成理论的TEST命令当中,如果一个字符串(不管含不含有空格)仅仅是在表达式中作为一个普通字符串而鈈是一个模式的一部分,则它也必须用引号括起来
我的理解是如果一个字符串值(右边那个的了)不加双引号,那这个字符串就是模式來的如果它里面有含有SHELL元字符,BASH会对它进行扩展如果字符串加了双引号,那它就是一个很普通的字符串的即便字符串里面里面含有特殊字符,也就是当普通内容来处理
5 [ express1 –a express2 ] 这是放在单括号与括号共同构成理论的TEST命令中的,因为单的不支持元字符扩展因此就只能叫做表达式了,它们可以组合构成逻辑测试的不过与或非使用( -a –o !)的形式。
[[pattern1 –a pattern1]] 这是放在双括号与括号共同构成理论TEST命令中的因为单条式子可鉯支持元字符嘛,所以可以叫做模式表达式了也就可以用于复合逻辑了,不过与非或使用(&& || !)的形式了
推荐用Replace Pioneer很简单,只要把所有连續的中文字符串加上括号与括号共同构成理论就可以了