Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在UNIX shell中,如何将一个文件中的变量调用到另一个文件_Linux_Shell_Unix_Ksh - Fatal编程技术网

Linux 在UNIX shell中,如何将一个文件中的变量调用到另一个文件

Linux 在UNIX shell中,如何将一个文件中的变量调用到另一个文件,linux,shell,unix,ksh,Linux,Shell,Unix,Ksh,我有一个.KSH文件,其中有两个变量Var1,Var2如何将不同文件中的X,Y值分配给Var1,Var2(Var1=X,Var2=Y) 将这两组来自不同文件(或.txt或.ksh)的电子邮件调用到我的xxxxx.ksh脚本的最佳方式是什么?我们在TTU服务器的bash脚本(执行bteq和tpt的地方)中使用一个公共文件,尽管这不是特定于TTU的,而是任何linux shell脚本 对于常见变量,我们有一个文件variables.ksh,其格式如下: export LIST1="name@doma

我有一个.KSH文件,其中有两个变量Var1,Var2如何将不同文件中的X,Y值分配给Var1,Var2(Var1=X,Var2=Y)


将这两组来自不同文件(或.txt或.ksh)的电子邮件调用到我的xxxxx.ksh脚本的最佳方式是什么?我们在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,因此非常方便。

我认为您需要在脚本中“点”它<代码>。otherFile.ksh第二个文件的格式是什么?您可以发布一个示例吗?如果[$STATUS!=0],则echo“错误-无法执行abcd
日期的BTEQ脚本”| mailx-s“在脚本xxxxx.ksh中失败…!!!$LIST1(第一组电子邮件)返回$STATUS fi echo“已完成abcd
日期的加载过程”|mailx-s“已完成abcd
日期的加载过程”
“-a$TGT_DIR/$FILE_NM$LIST2(第二组电子邮件),因此希望使用这组电子邮件创建一个文件,并调用我的xxxxx.ksh文件,更好的方法是什么请您编辑问题并修复标记?我尝试了一下,但未能理解
if的相关性[$STATUS!=0]然后回显
及以后。另外,如果
如果
有一个bug——如果
状态=''
,那么这将只运行
如果[!=0]
,这是无效的语法。如果引用扩展,如
[“$STATUS”!=0]
,那么你就没有这个问题了。请看,这会自动捕获这种错误。列表是字符串,而不是本机数组?嗯……从技术上讲,对于Teradata(ttu是etl套件),我通常会将电子邮件列表存储在数据库中,当它们不是以任何脚本硬编码时,然后在需要时通过BTEQ将它们取出。
#!/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