运行它会打印出两个语句
#!/bin/bash
echo "Hello" && echo "World"
然而,运行它只打印出“Hello”
#!/bin/bash
message() {
echo "Hello"
return 1
}
message && echo "World"
为什么这不起作用?如何更改我的脚本呢?
答案 0 :(得分:7)
“退出”值为0表示成功,而其他任何表示失败。和&&如果左侧失败(即如果它返回非零),则运算符不执行右侧
所以将return 1
更改为return 0
答案 1 :(得分:5)
return 1
(或其他任何不为0的东西)意味着false
表示bash,这意味着不会调用第二个命令。
使用return 0
(这意味着true
),或使用其他运算符(例如||
或;
)链接它们。)
正如评论中所提到的,技术上bash没有布尔值,并且&&
和||
在手册中没有被描述为“布尔短路运算符”,但是“控制运营商“。由于a && b
表示“当且仅当b
成功时才运行{{1}”,并且“成功”被定义为零退出代码(并且命令a
始终返回0,当true
返回1)时,净效应与我上面描述的相同。
答案 2 :(得分:5)
在bash中,返回值1
表示错误。
尝试return 0
答案 3 :(得分:4)
&安培;&安培;仅当第一条指令成功时才执行第二条指令,即具有0结果
答案 4 :(得分:1)
删除message()
函数中的return语句。