AIX7.2运行OWB到ODI迁移助手报无效替换错误如何解决?
报错根因
该错误是AIX系统默认Shell不支持Bash专属的参数展开语法导致的:
- OWB提供的
migration.sh脚本第24行使用了${1:0:13}这种Bash专属的子串截取语法,作用是取传入的第一个参数的前13个字符 - AIX 7.2默认的登录Shell是Korn Shell(ksh88),该版本不支持
${var:起始位:长度}格式的参数展开,执行时就会抛出0403-011的语法错误
排查解决步骤
- 先确认当前系统的Bash安装路径:
执行命令which bash,AIX 7.2通常会默认预装Bash在/usr/bin/bash路径下,如果返回为空可以先从AIX官方软件源安装Bash安装包。 - 方法1:临时指定Bash执行脚本(无需修改源文件)
执行命令时主动指定Bash作为解释器即可:cd $OWB_HOME/owb/bin/unix/ bash ./migration.sh <odi_master_password> <odi_user_password> <owb_workspace_owner_password> <configuration_file> - 方法2:修改脚本Shebang声明(一劳永逸)
编辑migration.sh文件,把第一行的#!/bin/sh或#!/bin/ksh修改为#!/usr/bin/bash,后续直接执行./migration.sh就会自动调用Bash运行。 - 兼容性验证:修改后如果不再抛出参数替换的语法错误,代表Shell兼容问题已经解决,若后续出现其他报错再逐一检查参数正确性、ODI/OWB的连接权限即可。
内容的提问来源于stack exchange,提问作者user16893452
相关产品推荐
相关产品推荐

