如何在 shell 脚本中引用包含变量的文件

9
我有许多Shell脚本,我想在这些脚本中包含一个包含变量的文件。
脚本?
我的变量脚本:
###################################################################################
ORACLE_LOGIN=login
ORACLE_PWD=pwd
CHEMIN_1="/home/"
CHEMIN_2="/scripts/"
LOG_FILE="$CHEMIN_1/max.log"
export ORACLE_SID=oracle_sid
###################################################################################

我的脚本 sh:
#!/bin/ksh
#set -x

# ==============   LOAD VAR HERE  ====================================
????

##################################################################
####                          Begin                           ####
##################################################################

write "Begin $0"  

$ORACLE_HOME/bin/sqlplus -s $ORACLE_LOGIN/$ORACLE_PWD@$ORACLE_SID <<EOF >> $LOG_FILE 2>&1 
@$CHEMIN_2/sp_rep_alim_dia_date_max.sql
exit
EOF

write "End."

谢谢。
4个回答

16

这要看使用的命令行解释器是哪个,但一般以下两个命令都可以:

. var
或者
source var

我不确定ksh,但我想两个都可以。


sh: 第5行:fct_commun.sh:没有此类文件或目录 - Mercer
1
当前目录中是否存在名为“var”的文件? - ams

5
. ./name_of_the_var_script

那就是点加空格加点再加斜杠再加文件名(因为“dot”实用程序需要您的var脚本的绝对或相对路径)。

sh: 第5行:fct_commun.sh:没有这种文件或目录 - Mercer
你确实需要指定正确的路径(通常情况下,"$(dirname "$0")" 是有效的)。 - mirabilos

2
使用 . (点)命令来源文件。
. var_script

注意:

  • 如果文件名不包含斜杠,那么bash将尝试在$PATH中查找它。
  • 如果在$PATH中找不到,则将使用当前目录(除非bash处于POSIX模式)。

参见手册中的.命令[source]。

因此,如果您知道它在哪里,请使用相对/绝对路径。 [source]: https://www.gnu.org/software/bash/manual/bash.html#index-_002e


sh: 第5行:fct_commun.sh:没有此类文件或目录 - Mercer
如果该文件与“主”脚本在同一目录中,则为. "$(dirname "$0")"/fct_commun.sh - glenn jackman

0

欢迎来到 Stack Overflow。如果这是一个答案,请提供关于此链接的有用信息,因为在答案部分中不允许评论。 - The Hungry Dictator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接