完成第一个循环后退出循环的Shell脚本

时间:2019-04-12 14:15:47

标签: bash oracle shell sqlplus

代码可以正常工作,直到最后一个for循环为止。 它尝试登录数据库。无论是否与数据库建立成功连接,脚本都会根据连接给出输出OK / NO OK,然后退出Shell脚本。我该怎么做才能解决这个问题?

#!/bin/bash

read -p 'Username: ' var_username
read -sp 'Password: ' var_password

filename="$1"

while read -r line; do
name=$(sed 's/#.*$//g; s/(.*$//g; s/=.*$//g; s/).*$//g')
done < "$filename"

#retval=$? | tail -n1|grep OK

for tns in $name
do
tnsping $tns
if [ $? -eq 1 ]; then
echo $tns 'tnsping i calismiyor' >>tnslatest.log
else
echo $tns 'tnsping i calisiyor' >>tnslatest.log
working_tns+=($tns)
fi
done


#The following lines do not work properly.#
for working in $working_tns
do
echo "exit" | sqlplus -L $var_username/$var_password@$working | grep             
Connected > /dev/null
if [ $? -eq 0 ] 
then
    echo "OK"
 else
    echo "NOT OK"
 fi
done

例如;我的tnsnames.ora文件包含4个tns。 因此,我希望总共获得OK或NOT OK这样的输出。

谢谢。

0 个答案:

没有答案