我怎样才能使用&&有我自己的功能?

时间:2011-06-07 22:52:39

标签: bash

运行它会打印出两个语句

#!/bin/bash
echo "Hello" && echo "World"

然而,运行它只打印出“Hello”

#!/bin/bash
message() {
  echo "Hello"
  return 1
}
message && echo "World"

为什么这不起作用?如何更改我的脚本呢?

5 个答案:

答案 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语句。