这是我第一次使用shell脚本(#!/ bin / sh)并且我一直在阅读教程之类的工作,但我坚持阅读和写一个键的值..
我试图从
形式的配置文件中读取key = value对key1_begin=abc
key1_end=def
key2_begin=123
key2_end=jkl
.. and so on
我希望用户将参数传递给脚本,如
something.sh 1 x y z
其中第一个参数用作修改相应键的参数。因此,在检查目录存在且文件存在后,我使用
来源它source config.cfg
然后我使用ID = $ 1保存id并使用
访问密钥echo key${ID}_begin
所以获取密钥值的读取将是
echo key${ID}_begin = $[key${ID}_begin]
我期望获得“key1_begin = abc”,而是继续获得“key1_begin = 0”。然而,相同的命令似乎适用于数字。例如,使用ID为2的此命令会给出“key2_begin = 123”
有人可以指出我正确的方向,为什么这对数字而不是字母表有效?
我用什么来改变变量的值?我目前正在使用“eval”,但这似乎只适用于数字
[ ! -z $2 ] && eval key${ID}_end=$3
非常感谢任何建议/指点。\
谢谢
答案 0 :(得分:0)
你很可能不得不使用中间变量:
key1_begin=abc
var="key${ID}_begin"
echo "$var=${!var}"
答案 1 :(得分:0)
正如此(假设bash):
#! /bin/sh
ID=2
source mychild.sh
keyid="key${ID}_begin"
echo "key${ID}_begin = ${!keyid}"
简而言之,在bash中,你可以
var=${!i}
或其他炮弹:
var=`eval echo \$$i`