python-2.7 - 如何使用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
解决方案
因为您打算保存环境变量,所以您唯一的选择是使用open
and 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 中阅读。
推荐阅读
- image-processing - caffe 通过 python 创建网络
- docker - 调试 Vue Webpack Browsersync Docker 瓶颈
- ios - 用户在文本字段中输入数据后如何立即执行操作?
- apache-kafka-streams - KTable 状态存储持久化
- ssis - 识别 SSIS 包中的依赖表
- java - Java:如何使用变量右对齐文本
- c# - C# 不可变哈希集锁定
- express - 如何在 Heroku 的两个不同端口上同时部署 Next.js 和 Express 服务器
- windows - windows 相当于在 .bash_profile 中设置 PATH
- coldfusion - 如何修复以哈希结尾的密码