我需要读取变量的值并将其设置为零并再次设置回旧值 我尝试了这些步骤
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]但不是旧值< / p>
如果我将其重置为零并尝试将其重置为旧值我该怎么做?
答案 0 :(得分:0)
就像我在上一次 question 的回答中所说,您应该使用配置解析器:
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
答案 1 :(得分:0)
sed -i -r“s / Max_value = [0-9] + / Max_value = $ value / g”/usr/master.ini
答案 2 :(得分: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"