【问题标题】:What is the way to call variables in one file to another file in UNIX shell在UNIX shell中将一个文件中的变量调用到另一个文件的方法是什么
【发布时间】:2017-01-11 19:14:14
【问题描述】:

我有一个 .KSH 文件,其中我有两个变量 Var1,Var2 将不同文件中存在的 X,Y 值分配给 Var1,Var2(Var1=x,Var2=y) 的方法是什么?

if      [ $STATUS != 0 ]
then
    echo "ERROR - Failed to execute the BTEQ Script for abcd `date` " | mailx -s "Failed in Script xxxxx.ksh...!!!" $LIST1(first set of emails )
    return $STATUS
fi
echo "Completed load process for abcd  `date`" | mailx -s "Completed load process for abcd  `date`" -a $TGT_DIR/$FILE_NM $LIST2(second set of emails)

将这两组电子邮件从不同文件(.txt 或 .ksh)调用到我的 xxxxx.ksh 脚本的最佳方法是什么

【问题讨论】:

  • 我认为你需要"dot"它在... . otherFile.ksh
  • 第二个文件的格式是什么?可以发个例子吗?
  • 如果 [ $STATUS != 0 ] 然后回显“错误 - 无法执行 abcd date 的 BTEQ 脚本” | mailx -s "脚本 xxxxx.ksh 失败...!!!" $LIST1(first set of emails) return $STATUS fi echo "已完成 abcd date 的加载过程" | mailx -s "已完成 abcd date 的加载过程" -a $TGT_DIR/$FILE_NM $LIST2(第二组电子邮件) 所以想用这组电子邮件创建一个文件并在我的 xxxxx.ksh 文件中调用什么是更好的方法
  • 您能编辑问题并修复标记吗?我试了一下,但未能理解 if [ $STATUS != 0 ] then echo 及以后的相关性。
  • 顺便说一句,您的if 有一个错误——如果STATUS='',那么它只会运行if [ != 0 ],这不是有效的语法。如果你引用你的扩展,如[ "$STATUS" != 0 ],那么你就没有这个问题。请参阅shellcheck.net,它会自动捕获此类错误。

标签: linux shell unix ksh


【解决方案1】:

我们在 TTU 服务器的 bash 脚本(我们执行 bteq 和 tpt)中使用一个通用文件,尽管这不是特定于 TTU,而是任何 linux shell 脚本。

对于公共变量,我们有一个文件variables.ksh,其格式为:

export LIST1="name@domain.com name2@domain.com name3@domain.com"
export LIST2="name4@domain.com name5@domain.com"
export ETLLogon="someusername"
export WorkDatabase="Commonlyusedb"
export othervariables="other values" 

然后在需要使用这些的每个 shell 脚本中,您只需将其带入 .:

#!/bin/ksh

#import common variables
. /path/to/variables.ksh

#and now you can use these:
if      [ $STATUS != 0 ]
then
    echo "ERROR - Failed to execute the BTEQ Script for abcd `date` " | mailx -s "Failed in Script xxxxx.ksh...!!!" $LIST1
    return $STATUS
fi
echo "Completed load process for abcd  `date`" | mailx -s "Completed load process for abcd  `date`" -a $TGT_DIR/$FILE_NM $LIST2

在这种情况下不需要导出变量,但我们经常在脚本中放入子shell,所以它很方便。

【讨论】:

  • 字符串,而不是原生数组,用于列表?
  • 嗯......从技术上讲,使用 Teradata(ttu 是 etl 套件)我通常将我的电子邮件列表存储在数据库中,当它们没有以任何脚本进行硬编码时,然后在需要时通过 BTEQ 将它们拉出.
猜你喜欢
  • 2014-02-22
  • 2020-02-18
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2019-05-27
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多