bash:使用eval magic动态创建变量时出现问题

时间:2019-03-27 16:23:13

标签: bash

我想从一个简单的文本文件中读取变量及其值,即:

variable1    :  value1
variable2    :  value2
[...]

并使用eval在我的bash脚本中动态创建变量。

在while循环中,我逐行读取变量,使用“ eval”创建和分配动态变量是可行的,而且我可以使用echo来显示变量的内容。

在while循环之外(在同一个shell脚本中),在变量之外的回显不再起作用了。这是一个错误吗?我做错什么了吗?

非常感谢您的坚持。

#! /bin/bash

config_file=bla

grep -v "^#" $config_file \
| while read line
do
        OIFS=$IFS
        IFS=':'
        set -- $line
        IFS=$OIFS
        variable="$(echo $1 | sed -e 's/[:space:]*//g')"
        value="$(echo $2 | sed -e 's/[:space:]*//g')"
        echo ">>> $variable $value"
        eval $variable=$value
        echo "AUFTRAG=$AUFTRAG"
        echo "SERVER_NAME=$SERVER_NAME"
done
echo "==================="
echo "AUFTRAG=$AUFTRAG"
echo "SERVER_NAME=$SERVER_NAME"
echo "==================="

在while循环中,两个变量AUFTRAG和SERVER起作用:

AUFTRAG=123456
SERVER_NAME=server01

在while循环之外,变量不再起作用:

===================
AUFTRAG=
SERVER_NAME=
===================

0 个答案:

没有答案