Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 循环的Shell脚本在完成第一个循环后退出_Bash_Oracle_Shell_Sqlplus - Fatal编程技术网

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

Bash 循环的Shell脚本在完成第一个循环后退出,bash,oracle,shell,sqlplus,Bash,Oracle,Shell,Sqlplus,代码在最后一个for循环之前工作正常。 它尝试登录数据库。无论是否与数据库建立成功连接,脚本都会根据连接给出输出OK/not 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/=.*$

代码在最后一个for循环之前工作正常。 它尝试登录数据库。无论是否与数据库建立成功连接,脚本都会根据连接给出输出OK/not 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
#/bin/bash
读取-p'Username:'var_Username
读取-sp'Password:'var_Password
filename=“$1”
而read-r行;做
name=$(sed's/#.*$//g;s/(.*$//g;s/=.*$//g;s/).*$//g')
完成<“$filename”
#retval=$?|尾部-n1 | grep正常
对于$name中的tns
做
tnsping$tns
如果[$?-等式1];然后
echo$tns'tnsping i calismiyor'>>tnslatest.log
其他的
echo$tns'tnsping i calisiyor'>>tnslatest.log
工作时间+=($tns)
fi
完成
#以下线路工作不正常#
在$working_tns工作
做
echo“exit”| sqlplus-L$var_username/$var_password@$working|grep
已连接>/dev/null
如果[$?-等式0]
然后
回音“OK”
其他的
回声“不正常”
fi
完成
比如,;我的tnsnames.ora文件包含4个tns。 所以,我想要有一个输出,总的来说是OK还是NotOK


提前感谢。

如果您想遍历数组,您可能需要在最后一个for循环中使用
“${working_tns[@]}”
,即读取时的第一个
循环没有执行您认为是的操作。我不确定你认为它在做什么,但它在做一些毫无意义的事情。你试过了吗?如果你想迭代一个数组,你可能需要在最后一个for循环中使用${working_tns[@]}
,而在read循环中,第一个
并没有按照你认为的那样做。我不知道你认为它在做什么,但它在做一些荒谬的事情。你试过了吗?