每日算法-Linux中变量的替换

Linux shell脚本中${xxx}是代表变量xxx的值,给定一个字符串中存在一个或者多个${xxx},需要将字符串中的所有${xxx} 替换成实际的值

输入:

第一行为赋值语句的行数

第二行开始后面的每一行为一个变量的赋值语句,左边是变量名,右边是变量的值,变量的值是纯字符串,且整个一行都没有空格,${xxx}代表变量xxx的值

示例:
输入:
4
xxx=lyf/${ttt}/test
ttt=www
yyy=seeyou
aa=/aaa/${xxx}/bbb/${yyy}/ccc
说明:第一行4为输入总行数,其余为输入字符串,

期望结果:将最后一行等号右边的实际值输出

解析:

1.先获取第一行输入的行数,然后根据行数,采集后面输入的字符串,并将字符串中的key和value分别保存起来

2.获取最后一行等号右边的值,然后将变量转化为实际的值,直到字符串里面不包含${}

Python3第一次输出代码如下:

A=input()
list1=[]
list2=[]
for a in range(int(A)):
    B=input()
    list1.append(B.split('=')[0])
    list2.append(B.split('=')[1])
result=list2[-1]
while '$' in result:
    for a in range(int(A)):
        repalace_value = "${" + list1[a] + "}"
        if repalace_value in result:
            result = result.replace(repalace_value, list2[a])
print(result)

 考虑到性能,把for循环优化掉

A=input()
list1=[]
list2=[]
for a in range(int(A)):
    B=input()
    list1.append(B.split('=')[0])
    list2.append(B.split('=')[1])
result=list2[-1]
while '$' in result:
     repalace_value = result.split('{')[1].split('}')[0]
     repalace_value1 = "${" + repalace_value + "}"
     index = list1.index(repalace_value)
     result = result.replace(repalace_value1, list2[index])
print(result)

 

posted @ 2021-09-26 09:39  三国初梦  阅读(625)  评论(0)    收藏  举报