KSH 脚本错误解释存储在 SQL oracle DB 中的别名

KSH 脚本错误解释存储在 SQL oracle DB 中的别名

我已将文件的路径作为别名存储在表中(因为完整路径对于表的字段来说太长)。但是,在我的 KSH 脚本中,当我执行以下操作时:

nomtmp=`sqlplus -S bla/bla <<ENDOFSQL
 select myPath
   ||'/'
   || 'myFileName'
   || '.xml'   
from myTable;
 exit
ENDOFSQL`

(myPath 包含 $fic)$fic 不被解释为别名,因此脚本正在目录“$fic”中查找文件,它不会将其解释为别名。

我无法修改表格的内容。我怎样才能让它知道它应该像处理别名一样处理它?

非常感谢。

答案1

您的 SQL 查询似乎返回一个子字符串 $ifc,您希望在分配给 nomtmp 时将其扩展为 shell 变量的值。

如果是这种情况,您可以使用多种方法来执行此操作,包括 shell eval 内置命令。尝试这个:

nomtmp=$(eval echo "$(sqlplus -S bla/bla <<ENDOFSQL
 select myPath
   ||'/'
   || 'myFileName'
   || '.xml'   
from myTable;
 exit
ENDOFSQL)")

注意

$( ... )

是相同的

` ... `

但前者更可取,因为它可以嵌套。另请注意,您可能希望${ifc}在数据库中使用,而不是$ifc这样您就可以将其用作前面和/或后面没有空格的真正子字符串。

相关内容