【发布时间】:2013-05-31 14:37:14
【问题描述】:
我正在使用 Oracle ODI 11g。我有linux源服务器。我必须通过删除前缀 (e_) 来重命名文件夹中的所有文件。我使用了命令:
cd /weblogic/
for f in $(ls e*); do echo mv "${f}" "${f##e_}"; done
通过腻子,它工作正常。此命令在 ODI 的 OSCommand API 中不起作用。我得到以下异常:
java.io.IOException: Cannot run program "for": error=2, No such file or directory
在命令周围添加引号不能解决问题。我也尝试将此命令复制到 test.sh 文件中,但它也不会从 ODI OSCommand 执行。 (这也是从腻子执行的)。文件的权限设置为 777。我得到以下异常
java.io.IOException: Cannot run program "./weblogic/test.sh": error=2, No such file or directory
我可以从 ODI 重命名目录中的单个文件,但它不适用于“for”。 谁能帮我从 ODI 执行这个命令?或者这个问题有什么解决方法吗?
【问题讨论】:
-
尝试给它完整路径并指定shell命令本身,如“sh /opt/weblogic/shellscript.sh”
-
它给了我异常“:第 1 行的语法错误:`$' 意外“
-
发现我正在指定 bash shell 命令并且 ODI 支持 posix shell (sh)。我用过
f in e_* ; do mv "$f" "`echo $f | sed -e 's/^e_//\'" ; done` -
如果您愿意,可以将其发布为您自己问题的答案,以便人们知道它有效。 =)
标签: linux oracle-data-integrator