0

这是我第一次使用 shell 脚本(#!/bin/sh),我一直在阅读教程等,但我坚持读和写键的值..

我试图从表单的配置文件中读取键=值对

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

非常感谢任何有关此的建议/指示。\

谢谢

4

2 回答 2

0

您很可能必须使用中间变量:

key1_begin=abc
var="key${ID}_begin"
echo "$var=${!var}"
于 2012-04-19T08:00:51.820 回答
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`
于 2012-04-19T08:09:08.520 回答