shell引入文件

#!/bin/bash

. ./source1.sh    「 引入文件 & 注意空格 」 

echo "菜鸟教程官网地址:$url"

source ./arr.sh    「 引入文件 」 

### 如何在 Shell 脚本中引入和使用配置文件 Shell 脚本中引入和使用配置文件是提升脚本灵活性和可维护性的重要方式。通过将配置信息从脚本中剥离出来,可以实现脚本与数据的分离,从而降低耦合度并提高复用性。 #### 1. 直接引入配置文件 一种简单直接的方式是使用 `source` 命令或点号 `.` 来加载配置文件。这种方式适用于配置文件Shell 变量定义的形式存在的情况。 ```bash # 检查配置文件是否存在,如果存在则加载 [ -r config.conf ] && . ./config.conf || echo "config.conf file not exist" ``` 通过这种方式,脚本可以访问配置文件中定义的所有变量,从而实现参数化配置。这种方法简洁高效,适合小型项目或简单的配置需求。 #### 2. 使用 `awk` 和 `sed` 解析配置文件 对于结构化的配置文件(如 INI 格式),可以通过 `awk` 和 `sed` 等工具进行解析。例如,以下脚本可以从配置文件中提取特定字段: ```bash # 从配置文件中提取 FTP_URL 的值 FTP_URL=$(cat eaxmple.ini | grep ftp_url | awk -F'=' '{ print $2 }' | sed 's/[[:space:]]//g') ``` 此方法通过多级管道操作提取配置项,适用于需要从特定格式文件中读取值的场景。通过 `grep` 提取目标行,再使用 `awk` 按等号分割字段,最后用 `sed` 清理多余的空格[^2]。 #### 3. 使用函数封装配置读取逻辑 为了提高代码的可读性和可维护性,可以将配置读取逻辑封装为函数。以下是一个示例函数,用于读取 INI 格式配置文件中的指定节(Section)和字段(Option): ```bash getconfig() { local Section=$1 local ConFile=$2 local Options="name\tage\t" echo -e "$Options" | tr '\t' '\n' | while read loop; do awk -F '=' -v section="$Section" -v option="$loop" ' $0 ~ /^\[/ && $0 ~ section {a=1} a == 1 && $1 ~ option { gsub(/[[:blank:]]*/, "", $2); print $2; exit } ' "$ConFile" done } ``` 该函数通过 `tr` 将字段名转换为换行分隔,再结合 `awk` 解析配置文件中指定节的键值对。此方式提高了脚本的模块化程度,便于扩展和维护。 #### 4. 读取多个配置项并循环处理 在某些场景下,可能需要读取一组配置项并逐个处理。例如,从配置文件中读取多个学生 ID 并循环处理: ```bash CONFIGFILE="myconfig.ini" profile=$(sed -n '/ids/p' "$CONFIGFILE" | awk -F= '{print $2}' | sed 's/,/ /g') for student in $profile; do echo "--------------------------------------------------" echo "student:$student" getconfig "$student" "$CONFIGFILE" done ``` 此方法通过 `sed` 提取包含 `ids` 的行,再使用 `awk` 获取值部分,并通过 `sed` 将逗号替换为空格,以便于 `for` 循环进行迭代[^3]。 ### 小结 通过引入配置文件Shell 脚本可以实现更灵活的参数管理,降低硬编码带来的维护成本。无论是直接加载 Shell 变量、使用文本处理工具解析结构化配置,还是通过函数封装逻辑,都可以根据具体需求选择合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值