Mar*_*ski 29 shell if-statement
这个问题专门针对shell脚本,但可能与任何编程语言有关.
使用多个if语句和elif在shell脚本中使用语句有什么区别吗?并且,case声明在我的情况下不起作用.
Jon*_*eet 56
是的,可能.考虑一下(C#,Java,无论如何):
int x = GetValueFromSomewhere();
if (x == 0)
{
// Something
x = 1;
}
else if (x == 1)
{
// Something else...
}
Run Code Online (Sandbox Code Playgroud)
对此:
int x = GetValueFromSomewhere();
if (x == 0)
{
// Something
x = 1;
}
if (x == 1)
{
// Something else...
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,只有一个 "东西"或"别的东西......"的发生.在第二种情况下,第一个块的副作用使第二个块中的条件成立.
然后再举一个例子,条件可能不是互相排斥的:
int x = ...;
if (x < 10)
{
...
}
else if (x < 100)
{
...
}
else if (x < 1000)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果你在这里摆脱"其他",那么一旦一个条件匹配,其余条件也将匹配.
if (x == 0) {
// 1
}
if (x >= 0) {
// 2
}
if (x <= 0) {
// 3
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将产生与下面的代码不同的值x=0.
if (x == 0) {
// 1
} else if (x >= 0) {
// 2
} else {
// 3
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,所有的陈述1,2以及3将被用于执行x = 0.在第二种情况下,只有陈述1.