gpt4 book ai didi

linux - 使用 grep 查找/剪切功能而不是源代码在 bash 中加载配置文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:17 24 4
gpt4 key购买 nike

我现在正在使用一个脚本,它通过 source 命令加载我所有的配置变量。它简单快捷有效。但我知道这不是一个非常安全的选择。

我读到我可以使用 $include 指令来获得相同的结果。这与 source 有什么不同或更安全,还是它们本质上相同?

如果上述两个选项都不安全,作为最后的选择,我试图理解我在 shell 脚本书籍中找到的 lookup 函数。它主要使用 grep、分隔符和 cut 从文件中执行变量名查找并检索值。这看起来很安全,我可以用它来修改我的脚本。

它几乎可以正常工作。我想我只需要将分隔符从 $TAB 更改为“=”,但我不确定它是如何工作的,或者它是否会工作。

我的配置文件格式:

Param=value

示例函数(来自笔记)

lookup() {
grep "^$1$TAB" "$2" | cut -f2
}

用法:

lookup [options] KEY FILE
-f sets field delimiter
-k sets the number of field which has key
-v specifies which field to return

我正在使用 Debian 版本的 Raspbian Jessie Lite 以防语法问题。

最佳答案

而不是 grepcut你应该考虑使用 awk可以根据给定的分隔符轻松地进行搜索和剪切操作:

lookup() {
key="$1"
filename="$2"

awk -F= -v key="$key" '$1 == key{print $2}' "$filename"

# use this awk if = can be present in value part as well
# awk -v key="^$key=" '$0 ~ key && sub(key, "")' "$filename"
}

这可以称为:

lookup search configfile.txt

-F=将分隔符设置为 =用于 awk 命令。

另请注意 $1$2单引号内是第 1 列和第 2 列,不应与位置 shell 变量 $1 混淆。 , $2等等

你应该看看getopts让它接受-f , -k等类型参数。

关于linux - 使用 grep 查找/剪切功能而不是源代码在 bash 中加载配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com