0

我有一个完全可用的 bash 脚本来下载所有 sftp 文件,将 .xlsx 文件转换为 .csv 并删除 .xlsx 文件。它适用于linux环境。但是,在 informatica 工作流程中通过会话前命令调用相同的脚本时,while(将 .xlsx 转换为 csv 文件)循环被跳过,只下载文件。您可以看到以下错误,“间接输入文件不包含文件名”,因为它位于 while 循环内。

在此处输入图像描述

日志

    #!/bin/bash

    export Src_Dir=/path/

    File1=/path/*.*
    DATE=`date +"%Y-%m-%d"`
    Host_Name=username@hostname
    Pass_Pwd='paswword'
    PORT=22


    cd "$Src_Dir" || { echo 'Failed to chdir into $Src_Dir' ; exit 0; }

    /usr/bin/expect<<EOD


    spawn /usr/bin/sftp -o Port=${PORT} username@hostname
    expect "password:"
    send "$Pass_Pwd\r"
    expect "sftp>"
    send "lcd ${Src_Dir}\r"
    expect "sftp>"
    send "mget ${File1}\r"
    expect "sftp>"
    send "mget ${File1}\r"
    expect "sftp>"
    send "bye\r"
    EOD
    echo "Download done"


    while IFS= read -r -d $'\0' file; do
        ssconvert "$file" --export-type=Gnumeric_stf:stf_csv
        ls *.csv > Filenames.txt
    done < <(find "$Src_Dir" -type f -iname "*.xlsx" -print0)

    rm *.xlsx
exit 0
4

0 回答 0