首页 > 解决方案 > 如何使用python打开shell脚本并更新变量值?

问题描述

我有 .sh 文件 (imr_s3_cp.sh) 。在这个文件中有变量 SRC_FOLDER。这个变量包含一些值。我想更新此值并将文件保存在同一位置。

文件包含这个 -

export SRC_FOLDER=**/imrmnt/vvtransform/csv**

export TRG_FOLDER=s3://itx-acm-eureka-dev-incoming-sourcefiles/imrland/

export LOG=/imrmnt/vvtransform/log/s3_cp.log

我想要以下结果-

export SRC_FOLDER=**/imrmnt/vvtransform/csv/CSV_01232019_01232019**

export TRG_FOLDER=s3://itx-acm-eureka-dev-incoming-sourcefiles/imrland/

export LOG=/imrmnt/vvtransform/log/s3_cp.log

标签: python-2.7

解决方案


因为您打算保存环境变量,所以您唯一的选择是使用openand write

第 1 步:读取并获取行

>>> ev_file = open("/path/to/ev.sh", "r+")
>>> evfile_contents = ev_file.read()
>>> evfilelines = evfile_contents.split("\n")

第 2 步:查找与SRC_FOLDER

>>> linenum = 0
>>> for i in range(0, len(evfilelines)):
...     if "SRC_FOLDER" in evfilelines[i]:
...             linenum = i
... 

第 3 步:将该行替换为新值

>>> evfilelines[linenum] = 'export SRC_FOLDER=**/imrmnt/vvtransform/csv/CSV_01232019_01232019**'

第 4 步:截断文件。注意:如果文件太大,您也可以转到该行并仅更改该行。我把它留给你去探索。

>>> ev_file.seek(0)
0
>>> ev_file.truncate()

第 5 步:编写新内容

>>> for i in evfilelines:
...     ev_file.write(i + '\n')

第 6 步:关闭文件以刷新缓冲区

>>> ev_file.close()

然后你就有了新的ev.sh,你可以在 python 中阅读。


推荐阅读