【问题标题】:Informatica IPC - UNIX script failInformatica IPC - UNIX 脚本失败
【发布时间】:2022-01-01 11:58:14
【问题描述】:

我创建了一个在会话结束后执行的 unix 脚本。 该脚本主要计算特定文件的行数,然后创建具有此特定结构的预告片:

T000014800000000000000000000000000000

T - 拖车

0000148 - 行数

00000000000000000000000000000 - 填充符

我已经在 Mac 中测试过脚本,我已经知道环境完全不同,但我想知道需要更改哪些内容才能在 IPC 中成功执行此脚本。

执行后,我收到以下错误消息: shell 命令失败,退出代码为 126。

我调用脚本如下:

sh -c "$PMRootDir/scripts/exec_trailer_unix.sh $PMRootDir/TgtFiles"


#! /bin/sh

TgtFiles=$1
TgtFilesBody=$TgtFiles/body.txt
TgtFilesTrailer=$TgtFiles/trailer.txt

string1=$(sed -n '$=' $TgtFilesBody)
pad=$(printf '%0.1s' "0"{1..8})
padlength=8
string2='T'
string3=$(printf '%s%*.*s%s\n' "$string2" 0 $((padlength - ${#string1} - ${#string2} )) "$pad" "$string1")
string4='00000000000000000000000000000'
string5=$(printf '%s%*.*s%s\n' "$string3" 0 $((${#string3} - ${#string4} )) "$string4")
echo $string5 > $TgtFilesTrailer

任何想法都会很棒。

提前致谢。

【问题讨论】:

    标签: unix session ipc informatica-powercenter script


    【解决方案1】:

    请检查以下几点。

    1. 看起来像是权限问题。请使用 informatica 用户(运行 infa demo 的用户)登录并运行此命令。您应该能够得到错误。
    sh -c "$PMRootDir/scripts/exec_trailer_unix.sh $PMRootDir/TgtFiles"
    
    1. 有时,UNIX 中的服务器变量 $PMRootDir 不会被解释,并可能导致 null 值。请使用echo $PMRootDir在使用上述用户登录UNIX后检查它是否工作。

    2. 您可以使用 Infa 轻松创建预告片文件。 只需在实际目标之前添加一个聚合器转换(按虚拟字段分组以计算计数(*))。然后添加一个表达式转换来创建这些字符串。然后是预告片文件目标。只需再进行 3 次转换。

               | --> AGG --> EXP --> Trailer Target file
    Final Tr --|--> Final Target
    

    【讨论】:

    • 非常感谢 Koushik Roy,我将向管理员创建一个请求,以便他们执行您发送的行。我将另一个已经创建的脚本作为参考。对于第 3 点,是的,实际上我已经有一个基于 sql 语句的映射并且它工作正常,但是现在平面文件将在几天内发生变化,所以预告片现在应该基于文件而不是比源数据库中的数据。
    猜你喜欢
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2016-12-29
    相关资源
    最近更新 更多