我的/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
?
答案 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,它们就成了 处理时的位置参数。命令和原始 位置参数在完成时恢复。否则 位置参数不变。退出状态是退出 最后一个命令的执行状态。