【发布时间】:2023-03-30 18:49:01
【问题描述】:
我已经有一段时间没有编写脚本了。我一开始就不好..
我正在编写一个测试 oracle 数据库连接的脚本。
testDB() {
[[ $(tnsping $tnsName | grep -c WRONG)==1 ]] && return 1
return 0
}
testDB
status="${?}"
echo "Status value= " $status
我希望我的回显中的值为 0,但不知何故我的状态在我的回显中显示为 1。
我在这里做错了什么?
EDIT2:
我原来的代码是:
testDB() {
[[ $(tnsping $tnsName | grep -c OK) -eq 1 ]] && return 1
return 0
}
我的 $tnsName 包含正确的值,并且 grep 计数为 1,但我的函数返回 0。
【问题讨论】:
-
你对
[[ $(tnsping $tnsName | grep -c WRONG)==1 ]] && return 1的意图不是很清楚。 -
基本上,我希望从 tnsping 中 grep -c OK。如果 tnsping 成功,计数将为 1。 TNSPING 不应在结果中包含任何名为 WRONG 的单词。因此计数为 0。
-
@sjsam OP 面临的直接问题是等号周围缺少空格,不是吗?您的编辑将其变成了另一个问题;问题中的代码编辑总是有问题 - 更改后问题仍然可以重现吗?
-
@tripleee : 嗯,确实我没注意到.. ;)