从一个尴尬命令中分配bash变量



希望某人可以帮助我提高我的尴尬命令!

假设我的文本文件大约有30行此类内容:

ENTIRE:11.3.28.4.0
OSVER:Solaris11
VARFREE:3G

我将这些分配给了这样的bash脚本中的变量:

ENTIRE=$(awk -F: '$1 ~ /ENTIRE/ {print $2}' $HOSTFILE)
RELEASE=$(awk -F: '$1 ~ /RELEASE/ {print $2}' $HOSTFILE)
OSVER=$(awk -F: '$1 ~ /OSVER/ {print $2}' $HOSTFILE)

因为我有大约30个,这意味着尴尬运行了30次,这很慢,显然不是最好的方法。

任何人都可以建议我如何将它们构建到一个尴尬命令中?

预先感谢!

您根本不需要awk。如果修改原始文件不是选项,请使用while循环和declare命令定义每个变量。

while IFS=: read name value; do
    declare "$name=$value"
done < "$HOSTFILE"

一个例子:

$ IFS=: read name value <<< "foo:bar"
$ declare "$name=$value"
$ echo "$foo"
bar

最新更新