function read_from_settings(){
setting_yaml="$1"
keyword="$2"
value=$(cat "$setting_yaml" | grep "$keyword" | awk '{print $2}' | tr -d "[:space:]")
echo "$value"
}
这是一个简单的 Bash 函数,名为 `read_from_settings`,用于从 YAML 文件中读取特定关键词的值。接下来,我将详细解释这个函数的每一部分,并给出一个例子。
### 函数详解
function read_from_settings(){
setting_yaml="$1" # 将传入的第一个参数(即 YAML 文件的路径)赋值给变量 setting_yaml
keyword="$2" # 将传入的第二个参数(即要搜索的关键词)赋值给变量 keyword
# 使用管道将多个命令连接起来,从 YAML 文件中读取关键词的值
# cat "$setting_yaml":显示 YAML 文件的内容
# grep "$keyword":从文件中搜索关键词
# awk '{print $2}':输出每行中第二个字段的值(默认字段分隔符是空格)
# tr -d "[:space:]":删除所有空白字符(包括空格、制表符等)
value=$(cat "$setting_yaml" | grep "$keyword" | awk '{print $2}' | tr -d "[:space:]")
echo "$value" # 输出关键词的值
}
### 举例说明
假设你有一个名为 `settings.yaml` 的文件,内容如下:
database:
host: localhost
port: 3306
username: admin
password: secret
你想从这个文件中读取 `port` 的值。你可以通过以下方式调用函数:
read_from_settings settings.yaml "port:"
输出应该是:
3306
注意,在搜索关键词时,我们使用了 `"port:"`(包括冒号)。这是因为 YAML 文件中的键和值之间通常使用冒号分隔。同时,由于我们使用了 `awk '{print $2}'`,它会输出每行中第二个字段的值,这意味着它会输出冒号后面的值。
此外,`tr -d "[:space:]"` 用于删除值周围的任何空白字符,以确保输出的值是纯净的。