运行此打印出两个语句如何使用&&与我自己的功能?
#!/bin/bash
echo "Hello" && echo "World"
然而,运行此只打印出“你好”
#!/bin/bash
message() {
echo "Hello"
return 1
}
message && echo "World"
为什么不这项工作,我怎样才能改变我的脚本,它呢?
运行此打印出两个语句如何使用&&与我自己的功能?
#!/bin/bash
echo "Hello" && echo "World"
然而,运行此只打印出“你好”
#!/bin/bash
message() {
echo "Hello"
return 1
}
message && echo "World"
为什么不这项工作,我怎样才能改变我的脚本,它呢?
“退出”值为0意味着成功,而其他意味着失败。如果左侧失败& &经营者不执行右手边(即如果它返回非零)
因此改变return 1
到return 0
0是真的?我应该猜到了:)。谢谢! – 2011-06-07 23:00:48
@Rupert不是“true或false” - 而是:'a && b'表示“仅在成功时运行b” - 注意这里没有附加“true或false”,因为'&&'和'| |'类似于布尔短路评估器,它们不是。他们是“控制操作员”。 – 2011-06-07 23:31:18
return 1
(或其他任何这是不是0)表示false
为bash,表示第二个命令不会被调用。
使用return 0
(这意味着true
),或者他们使用其他运营商(如||
或;
。)
正如评论中提到链条,技术上的bash没有布尔值,并&&
和||
是在手册中没有描述为“布尔短路操作符”,而是“控制操作符”。由于a && b
的意思是“当且仅当a
成功时运行b
”,并且“成功”被定义为零退出代码(并且命令true
总是返回0,而false
返回1),所以净效果与我描述的相同以上。
这不一定是正确的。 '&&'和'||'不是布尔短路操作符(因此标准的TTL逻辑或名称不适用)。它们是控制操作符,其中'a && b'表示“只有成功时才运行b”(不存在“真或假”) - 从手册:“command2在命令1返回退出状态时执行为零“。 – 2011-06-07 23:34:05
@pst:是的,命令'true'和'false'的退出状态是什么?如果我们知道“退出代码= 0意味着真,其他意味着假”,那么'&&'和'||'在bash中就像布尔快捷运算符一样工作。 – 2011-06-07 23:58:08
在bash中,返回值为1
表示错误。
尝试return 0
在message()
功能删除return语句。
知道默认返回值为真是非常有用,所以谢谢。尽管如此,这在所有情况下都无济于事。 – 2011-06-07 23:05:06
& &执行第二指令只有当第一个是成功的,即具有0结果
应该有用于触发n个联立相同的答案徽章。 – 2011-06-07 22:56:44
由于答案低于所有状态,因为根据返回代码,'bash'将成功/失败的相反值用于通常的真/假预期。 – Orbling 2011-06-07 22:58:03
@Ben我实际上有2个,但他们被删除:) – 2011-06-07 23:03:19