0

我需要读取变量的值并将其设置为零,然后再次设置回旧值我尝试了这些步骤

value=$(grep -Po '(?<=Max_value=).*' /usr/post_check.ini|awk '{print $1}')
sed -i -r 's/Max_value=[0-9]+/Max_value=0/g' /usr/master.ini
echo "$value" # say $value is 3
sed -i -r 's/Max_value=[0-9]+/Max_value=$value/g' /usr/master.ini
value=$(grep -Po '(?<=Max_value=).*' /usr/master.ini|awk '{print $1}')
echo "$value"

上面的代码将值 Max_value 设置为 $value[我的意思是实际到文本 $value 但不包含它的值,它是 3,如 "Max_value=$value" 而不是 Max_value=3] 但不是旧值

如果我将其重置为零并尝试将其设置回旧值我会怎么做?

4

3 回答 3

0

就像我在回答您上一个问题时所说的那样,您应该使用配置解析器:

import ConfigParser

config = ConfigParser.ConfigParser()
config.read('post_check.ini')

print config.get('section 1','Max_value')

config.set('section 1','Max_value','0')
print config.get('section 1','Max_value')

演示

$ cat post_check.ini
[section 1]
Max_value=123
[section 2]
Max_value=456

$ python config.py
123
0 
于 2013-04-03T17:40:48.657 回答
0

sed -i -r "s/Max_value=[0-9]+/Max_value=$value/g" /usr/master.ini

于 2013-04-03T18:21:13.957 回答
0

直接插入 $value 的特殊问题是因为您使用单引号而不是双引号。

但是我建议使用 crudini,它是从 shell 操作 ini 文件的专用工具

value=$(crudini --get /usr/post_check.ini section Max_value)
crudini --set /usr/post_check.ini section Max_value 0
echo "$value"
crudini --set /usr/post_check.ini section Max_value "$value"
value=$(crudini --get /usr/post_check.ini section Max_value)
echo "$value"

有关使用和下载的详细信息,请访问: http ://www.pixelbeat.org/programs/crudini/

于 2013-06-28T00:58:00.333 回答