一、问题或需求
因为工作要求,需要重构一部分的shell脚本,脚本中有些使用到的文件路径、参数、配置项等等,都写死在脚本中,导致脚本耦合度高,使用不灵活、复用性也不高,因此需要重构一部分代码。将部分配置项单独拿出来,成立一个配置文件,然后在shell脚本中读入并引用相关配置项。
二、解决办法
这里使用到的config.txt和test.sh都是临时创建的一个文件,总的方法还是不变的~
#config.txt 文件内容
FILE_PATH=/root/snoe
FIZE_SIZE=15
1.方法一 :source
#!/bin/bash
source config.txt
echo $FILE_PATH
echo $FIZE_SIZE
运行脚本之前需要注意一点,source只存在于bash中,用sh去运行test.sh是会报错,如下:
root@juzuodaliyun:~/gcj sh test.sh a.txt
test.sh: 5: test.sh: source: not found
因此必须使用bash去运行这个脚本。
root@juzuodaliyun:~/gcj bash test.sh
/root/snoe
15
2.方法二:while read line;
使用循环读入的办法也可以将配置文件中的配置项读入到shell脚本中
#!/bin/bash
while read line;
do
eval "$line"
done < config.txt
echo $FILE_PATH
echo $FIZE_SIZE
运行脚本,也可以将配置文件中的所有配置项读入,并在脚本中引用。
root@juzuodaliyun:~/gcj sh test.sh
/root/snoe
15
其实还有用for循环等方法,这个你可以自己去实现,原理都是大同小异的。
参考博文:https://www.cnblogs.com/pengdonglin137/p/3858696.html