我总是很惊讶文件夹中/bin
有一个[
程序。
当我们做类似的事情时,这就是所谓的if [ something ]
吗?
通过[
在shell中显式调用该程序,它会要求一个对应的]
,当我提供右括号时,无论我在括号之间插入什么,它似乎都无济于事。
不用说,有关帮助有关程序不能正常工作,即无论是通常的方式man [
,也没有[ --help
工作。
man '['
对我来说效果很好-您忘了引用[
或者您对“作品”有不同的定义。
[
评估其参数,因此您需要在所有参数之间留有空格。 [ a=b ]
不是比较:它将始终为true(它是一个字符串:“ a = b”,始终被评估为true),并且应将参数的数量限制为4(即使最近的实现允许更多。) 。限制为4使其更具可移植性。例如:[ "a" = "b" ]
已经有4个参数:“ a”“ =” =“ b”和test arg的不必要结尾:“]”)。如果您需要更多:链测试,例如:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!
本身(未转义和未引用)不会被替换,甚至更好if ! [ ...
。使用的所有bash扩展!
至少都包含其他字符
[
内置了-builtin bash
(也可能还有其他shell),并且可以使用-buildin 代替/bin/[
。还有test
-command,在许多系统上,它是至/bin/[
(或反之)的符号链接-在其他系统上,则是单独的命令。
[
指test
命令expr
,所以应该是man test