当前位置: 首页 > 知识库问答 >
问题:

BASH-函数返回错误的值[重复]

左丘兴生
2023-03-14

我写剧本已经有一段时间了。我一开始就不好...

我正在编写一个测试oracle DB连接的脚本。

testDB() {
    [[ $(tnsping $tnsName | grep -c WRONG)==1 ]] && return 1
    return 0
}

testDB
status="${?}"
echo "Status value= " $status

我希望我的回音值为0,但不知怎么的,我的状态在回音中显示为1。

我做错了什么?

编辑2:

我的原始代码是:

testDB() {
    [[ $(tnsping $tnsName | grep -c OK) -eq 1 ]] && return 1
    return 0
}

我的$tnsName包含正确的值,grep计数将为1,但我的函数返回0。

共有2个答案

赖绪
2023-03-14

这是第二行<代码>

我理解你的意图是返回1是测试为真,否则返回0。如果是这样的话,就这样写吧。

testDB(){if[[$(tnsping$tnsName|grep-c WRONG)==1]];然后返回1否则返回0 fi}

我希望这能有所帮助。

弘和同
2023-03-14

不需要变量,也不需要grep-c。只需使用grep-q(无输出)来返回真/假标志:

testDB() {
    tnsping $tnsName | grep -q OK
    }

testDB
echo "Status value= " $?
 类似资料:
  • 我正在使用一个bash脚本,我想执行一个函数来打印返回值: 当我执行时,它不会打印“34”。为什么会这样呢?

  • 如您所见,它将参数和的和保存在变量中,然后将包含它们的和的eax寄存器保存在变量中,就像函数返回值一样。 这样做是因为函数是用返回值定义的吗?

  • Go 语言的函数经常使用两个返回值来表示执行是否成功:返回某个值以及 true 表示成功;返回零值(或 nil)和 false 表示失败(第 4.4 节)。当不使用 true 或 false 的时候,也可以使用一个 error 类型的变量来代替作为第二个返回值:成功执行的话,error 的值为 nil,否则就会包含相应的错误信息(Go 语言中的错误类型为 error: var err error,

  • 问题内容: 当尝试使用str_to_date()将我的Estimates表中的字符串日期值的列CreatedDate转换为mySQL日期格式时,我一直收到错误消息。我的数据列包含m/ d / yy格式的日期(例如:1/26/16或3/3/16)。 我跑了这个查询: mySQL返回此错误消息: 我的查询出了什么问题? 问题答案: 清理数据的通常策略如下: 然后,当您确信一切都正确转换后: 适当字段的

  • 在rust中,任何函数都有返回类型,当函数返回时,会返回一个该类型的值。我们先来看看main函数: fn main() { //statements } 之前有说过,函数的返回值类型是在参数列表后,加上箭头和类型来指定的。不过,一般我们看到的main函数的定义并没有这么做。这是因为main函数的返回值是(),在rust中,当一个函数返回()时,可以省略。main函数的完整形式如下:

  • Lua 具有一项与众不同的特性,允许函数返回多个值。Lua 的库函数中,有一些就是返回多个值。 示例代码:使用库函数 string.find,在源字符串中查找目标字符串,若查找成功,则返回目标字符串在源字符串中的起始位置和结束位置的下标。 local s, e = string.find("hello world", "llo") print(s, e) -->output 3 5 返回多个值