Linux 如何从文件中读取变量,修改并将其安全保存到其他变量 我想要的:
有一个包含变量的文件Linux 如何从文件中读取变量,修改并将其安全保存到其他变量 我想要的:,linux,bash,shell,file,sed,Linux,Bash,Shell,File,Sed,有一个包含变量的文件/scripts/backup/config.cfg。就我的具体情况而言,重要的是: BACKUPLOCATION="" ROOTLOCATION="/backup" 然后是一个脚本/scripts/backup/performBackup.sh 出于特定原因,我希望脚本的一部分执行以下操作: 读取变量ROOTLOCATION 添加(“/”和)时间戳(日期和时间) 将新创建的值安全保存到反上传位置(通过替换其当前值) 例子 如果这是c
/scripts/backup/config.cfg
。就我的具体情况而言,重要的是:
BACKUPLOCATION=""
ROOTLOCATION="/backup"
然后是一个脚本/scripts/backup/performBackup.sh
出于特定原因,我希望脚本的一部分执行以下操作:
ROOTLOCATION
反上传位置
(通过替换其当前值)config.cfg
的先前状态:
BACKUPLOCATION="dummy"
ROOTLOCATION="/backup"
脚本运行后,应为:
BACKUPLOCATION="/backup/2020-05-02-23-00"
ROOTLOCATION="/backup/"
我试过的
首先,使用
然后我尝试使用sed
命令,但是引号把我弄糊涂了。这里有一次尝试(没有成功):
试试这个:
source /scripts/backup/config.cfg
sed -i 's|BACKUPLOCATION=.*|BACKUPLOCATION="'"$ROOTLOCATION/$(date +%Y-%m-%d-%H-%M)"'"|' /scripts/backup/config.cfg
sed的问题是使用了
/
作为分隔符,它在扩展后出现在$ROOTLOCATION
中,因此sed失败。我使用了|
,它通常不存在于文件名中。如果您使用|
创建文件,该sed也将失败!因此,“了解您的数据”:欢迎来到stackoverflow。请不要包括“你好”或类似的内容。有关更多信息,请参见此处:您选择了/
作为sed替换的分隔符,但您的字符串包含未替换的/
。选择其他内容,如逗号:sed-i's,BACKUPLOCATION\=.*,BACKUP…
请查看上的页面;如果唯一的问题是在编辑中,那么就没有必要告诉我们您打算进行的读-编辑-写操作。@Beta因为我现在不知道问题的确切根源,我认为如果一般方法是错误的,我最好解释一下背景。但我在将来会记住这一点。感谢you@Techflix对于初学者来说,你做得相当不错,但有时会出现一些微妙之处。
sed -i 's/BACKUPLOCATION\=.*/BACKUPLOCATION="'$ROOTLOCATION/$(date +%Y-%m-%d-%H-%M)'"/' /scripts/backup/config.cfg
source /scripts/backup/config.cfg
sed -i 's|BACKUPLOCATION=.*|BACKUPLOCATION="'"$ROOTLOCATION/$(date +%Y-%m-%d-%H-%M)"'"|' /scripts/backup/config.cfg