我已将文件的路径作为别名存储在表中(因为完整路径对于表的字段来说太长)。但是,在我的 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
这样您就可以将其用作前面和/或后面没有空格的真正子字符串。