我制作了一个脚本来检查tnsping但if语句无法正常工作。以下是脚本:
ping=$(tnsping oracle1 |grep OK| awk -F" " '{print $1 }')
if [ -n $ping ]
then
echo "OK"
else
echo "NOT OK"
fi
如果对于不存在的oracle服务器执行更改oracle,我也会收到“OK”。
-n = STRING的长度大于零
答案 0 :(得分:4)
在$ping
周围包裹双引号:
if [ -n "$ping" ]
then
echo "OK"
else
echo "NOT OK"
fi
或者当[
为空时,它将进行单词拆分和通配并在'-n'
:']'
和$ping
的以下参数中解析。这与:
if [ '-n' '-n' ']'
请参阅man test
:
-n STRING
STRING的长度非零 的 STRING
相当于-n STRING
-z STRING
STRING的长度为零
您可以省略对grep
的调用并直接使用awk。由于默认的字段分隔符(-F)是可以省略的空格:
ping=$(tnsping oracle1 | awk '/OK/{print $1 }')
答案 1 :(得分:2)
$ping
变量和awk
都不是必需的,因为grep
可以将退出代码返回给{{1} }:
if