如何从shell脚本中的config / param文件导入和使用变量

时间:2015-12-12 13:37:48

标签: shell ksh

我的/home/s/project/bin/FileOperation.sh文件是:

#!/bin/ksh
/home/s/project/Param/Param_File.config
current=$(dirname $0)
echo $current
echo 'hello'
echo $RootDir
echo $message

我的/home/s/project/Param/Param_File.config文件是:

RootDir=/home/s/project
message=hello

当我执行上面的shell脚本时,我得到以下输出:

.

hello

如何打印$RootDir$message的值?

是否有任何快捷方式导入配置文件而不是在shell脚本中编写/home/s/project/Param/Param_File.config

1 个答案:

答案 0 :(得分:2)

试试这个:

#!/bin/ksh

. /home/s/project/Param/Param_File.config
current=$(dirname $0)
echo $current
echo 'hello'
echo $RootDir
echo $message

点(.)告诉shell将文件作为当前环境中的脚本执行(因此环境更改有效)。参见例如here。您必须确保执行的文件是有效的脚本。

如果没有点(.),脚本将在一个新流程中运行,而这个流程无法改变它的父环境。

文件的相关部分:

  

。名称[arg ...]

     

如果name是使用函数名定义的函数   保留字语法,该函数在当前执行   环境(就好像它已使用name()语法定义。)   否则,如果name引用文件,则完整地读取该文件   并且命令在当前shell环境中执行。该   PATH指定的搜索路径用于查找包含的目录   文件。如果指定了任何参数arg,它们就成了   处理时的位置参数。命令和原始   位置参数在完成时恢复。否则   位置参数不变。退出状态是退出   最后一个命令的执行状态。