我有一个带有数组的shell,其中有一个oracle db的表列表。这是数组:
ListTabs=""
ListTabs=$ListTabs"T_Tab1\n"
ListTabs=$ListTabs"T_Tab2\n"
ListTabs=$ListTabs"T_Tab3"
echo $ListTabs
arrArr=0
IFS=\n
for listArr in ${ListTabs[@]};
do
#echo $listArr
MYDIR[${ARR}]=$listArr
(( arrIdx = $ARR+ 1 ))
done
然后我有一个带有sqlplus连接的选择
sqlplus -S -L ${MYCONNCTIONDB} @${FILE_SQL}
当我尝试运行shell时,我收到错误:ORA-01017:用户名/密码无效;登录被拒绝。我确定连接是正确的,因为如果我删除了数组,那么shell运行良好。有什么想法吗?
答案 0 :(得分:1)
对于您的阵列,您正在设置IFS
:
IFS=\n
...这也将影响脚本后面的字符串解释。您可以在数组部分之后unset IFS
,或者在设置临时变量之前将旧值存储在临时变量中(O_IFS=$IFS; IFS=\n
)并在之后将其还原(IFS=$O_IFS; unset O_IFS
)。