我想从一个简单的文本文件中读取变量及其值,即:
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=
===================