我有一个正在使用的脚本,该脚本通过source
命令加载所有配置变量。简单,快速,有效。但是我知道这不是一个非常安全的选择。
我读过我可以使用$include
指令来达到相同的结果。那是不是比source
它们更安全或更基本相同?
作为最后的选择,如果以上两个选项都不安全,那么我试图理解lookup
我在Shell脚本书中找到的函数。它基本上使用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,以防语法问题。
而不是grep
和cut
你应该考虑使用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
等等类型的参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句