在 UNIX 脚本中运行的 SFTP 中使用变量

问题描述 投票:0回答:1

尝试从我们的数据库服务器中提取文件并将其带到我们的应用程序服务器(均为 AIX)。 该文件末尾有一个时间戳,以使其具有唯一性。 UA401.dat.

过程是...

  1. cobol 程序构建文件名,执行 shell 脚本,该脚本运行 pl/sql 片段以在我们的数据库服务器上构建文件 2 接下来,cobol 程序执行第二个 shell 脚本并将包括文件名在内的多个参数传递给它。然后,此脚本将文件名移动到变量,最后使用 SFTP 将文件从数据库服务器拉到应用程序服务器。

一切工作正常,除了当 SFTP 运行时它不喜欢其中的变量。

这是代码片段...

FILENM=$4

echo
echo "starting sh4 - friday am - area 2" 
echo $1 "  " $2 " " $3 " " $4 " " $5
echo "now lets try the new varialbles"
echo ${FILENM}
echo ${EMAILADDR}
echo
echo "new code"
echo

sftp  [email protected]
"lcd /LAWSON/lsfenv1/Interface_Dir/outbound"
cd "/ORACLE/bin/app/oracle/local/INFORT/Interface_Dir/outbound"
"get ${FILENM}"
quit

这是日志中的输出...

starting sh4 - friday am - area 2  
         10    11-DEC-23   12-DEC-23   UAB401124711.dat   [email protected]  
         now lets try the new varialbles  
         UAB401124711.dat  
         [email protected]  
                 
         new code  
                 
Connected to lawdbtst1.hs.uab.edu.  
/LAWSON/lsfenv1/Interface_Dir/scripts/klktheory/./klktheory4.sh[44]: lcd /LAWSON/lsfenv1/Interface_Dir/outbound:  not found  

/LAWSON/lsfenv1/Interface_Dir/scripts/klktheory/./klktheory4.sh[45]: /ORACLE/bin/app/oracle/local/INFORT/Interface_Dir/outbound:  not found  

/LAWSON/lsfenv1/Interface_Dir/scripts/klktheory/./klktheory4.sh[46]: get UAB401124711.dat:  not found  

/LAWSON/lsfenv1/Interface_Dir/scripts/klktheory/./klktheory4.sh[47]: quit:  not found  
unix sftp
1个回答
0
投票

你需要一个定界符

sftp  [email protected] <<EOF
  lcd /LAWSON/lsfenv1/Interface_Dir/outbound
  cd /ORACLE/bin/app/oracle/local/INFORT/Interface_Dir/outbound
  get ${FILENM}
  quit
EOF
© www.soinside.com 2019 - 2024. All rights reserved.