If statement bourne shell中带括号和不带括号的if语句有什么区别?

If statement bourne shell中带括号和不带括号的if语句有什么区别?,if-statement,sh,If Statement,Sh,例如: if $input = 'y' 原因 ./test.sh:未找到第5行:y:命令 当 不会导致错误吗 无法计算条件的if语句的用途是什么?if不计算任何条件。它只是执行谓词程序并对其返回代码进行操作[实际上是一个程序,它执行一些条件,并返回适当的返回代码 [可以与不带if的OneLiner一起使用,如果您不需要else分支: $ [ 1 -eq 2 ] && echo "foo" # -> no output 如果不计算任何值。它只执行谓词程序并对其返回代码执行

例如:

if $input = 'y'
原因

./test.sh:未找到第5行:y:命令

不会导致错误吗


无法计算条件的if语句的用途是什么?

if
不计算任何条件。它只是执行谓词程序并对其返回代码进行操作
[
实际上是一个程序,它执行一些条件,并返回适当的返回代码

[
可以与不带if的OneLiner一起使用,如果您不需要
else
分支:

$ [ 1 -eq 2 ] && echo "foo"
# -> no output

如果
不计算任何值。它只执行谓词程序并对其返回代码执行操作。
[
实际上是一个执行少量条件并返回适当返回代码的程序

[
可以与不带if的OneLiner一起使用,如果您不需要
else
分支:

$ [ 1 -eq 2 ] && echo "foo"
# -> no output

@cnicutar:没错。现代shell还提供了
[[
,这是一个完全内置的,并且有更多的功能。@anonymous:扩展了现在已经很旧的
[
。旧的bourne shell不支持它。但是对于bash,您可以在这里了解它:@cnicutar:没错。现代shell还提供
[[
这完全是一个内置的,并且有更多的功能。@anonymous:扩展到现在已经很旧的
[
。旧的bourne shell不支持它。但是对于bash,您可以在这里了解它: